win32 broken again

Well... that didn't take long. I'm not sure what you did, Reid, with Path.cpp, but it broke VC++:

Bytecode.lib(ReaderWrappers.obj) : error LNK2001: unresolved external symbol "public: __thiscall llvm::sys::Path::Path(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0Path@sys@llvm@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
System.lib(Signals.obj) : error LNK2019: unresolved external symbol "public: bool __thiscall llvm::sys::Path::isDirectory(void)const " (?isDirectory@Path@sys@llvm@@QBE_NXZ) referenced in function "void __cdecl llvm::sys::RemoveDirectoryOnSignal(class llvm::sys::Path const &)" (?RemoveDirectoryOnSignal@sys@llvm@@YAXABVPath@12@@Z)
System.lib(Signals.obj) : error LNK2019: unresolved external symbol "public: bool __thiscall llvm::sys::Path::destroyDirectory(bool)const " (?destroyDirectory@Path@sys@llvm@@QBE_N_N@Z) referenced in function __catch$?Cleanup@@YAXXZ$0
System.lib(Signals.obj) : error LNK2019: unresolved external symbol "public: bool __thiscall llvm::sys::Path::destroyFile(void)const " (?destroyFile@Path@sys@llvm@@QBE_NXZ) referenced in function "void __cdecl Cleanup(void)" (?Cleanup@@YAXXZ)

Hi Jeff,

Typically, I've found out that these missing functions are placed beneath lib/System/Unix in some of *.cpp files. These function can be copied to their respectively lib/System/Win32 *.cpp files.


----Original Message Follows----


I'm slowly migrating lib/System away from the use of the "platform"
symbolic link and consolidating the implementation into just the Unix
and Win32 directories. The operating system differences amongst Unixes
are not significant enough to warrant separate directories and files for
all of them. Most of those files are empty. Last night I did the merge
for Path.cpp.

The new #include strategy replaces:

#include "platform/Path.cpp"


#if defined(LLVM_ON_UNIX)
#include "Unix/Path.cpp"
#if defined(LLVM_ON_WIN32)
#include "Win32/Path.cpp"

One Unix systems the LLVM_ON_UNIX #define will be automatically set by
the configure script. For Win32, I suggest that you pass
-DLLVM_ON_WIN32=1 to the compiler for all lib/System compilations. The
missing symbols you have shown below are a result of LLVM_ON_WIN32 not
being set.


No need to cpoy functions, they are already there. The problem was that
Win32/Path.cpp was not being included into Path.cpp because
LLVM_ON_WIN32 was not set.