biologi spm via llvm-dev
2017-Jun-09 08:25 UTC
[llvm-dev] Cannot build Clang/LLVM on Windows with LLVM_BUILD_LLVM_DYLIB
I am trying to build Clang/LLVM with -DLLVM_BUILD_LLVM_DYLIB=ON and -DLLVM_LINK_LLVM_DYLIB=ON to reduce the size of toolchain. I am getting LINK error 1181 about `lib\LLVM.lib` not found. After investigating, `lib\LLVM.lib` is supposed to be produced along with `bin\LLVM.dll`. `bin\LLVM.dll` is indeed produced, but it does not contain any exported symbols (10KB only) because LLVM does not use `__declspec(dllexport)` and `__declspec(dllimport)`, so lib.exe refuses to produce `lib\LLVM.lib`. If I just build static-linked Clang/LLVM (default), it works fine. Windows bot of WebAssembly waterfall is also affected: https://github.com/WebAssembly/waterfall/commit/2051fd4cdb2b4017e66dfcd70203d40f3d0b461d Compiler: Visual Studio 2017 CMake configuration: cmake -GNinja -Bbuild -Hllvm -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=d:\a\1\b -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly
NAKAMURA Takumi via llvm-dev
2017-Jun-09 09:59 UTC
[llvm-dev] Cannot build Clang/LLVM on Windows with LLVM_BUILD_LLVM_DYLIB
It's unsupported on MS toolchain. It's too hard to make LLVM headers and libs DLL-ready. It would be theoretically possible on mingw. (oops, it requires awk...) On Fri, Jun 9, 2017 at 5:25 PM biologi spm via llvm-dev < llvm-dev at lists.llvm.org> wrote:> I am trying to build Clang/LLVM with -DLLVM_BUILD_LLVM_DYLIB=ON and > -DLLVM_LINK_LLVM_DYLIB=ON to reduce the size of toolchain. > > I am getting LINK error 1181 about `lib\LLVM.lib` not found. After > investigating, `lib\LLVM.lib` is supposed to be produced along with > `bin\LLVM.dll`. `bin\LLVM.dll` is indeed produced, but it does not > contain any exported symbols (10KB only) because LLVM does not use > `__declspec(dllexport)` and `__declspec(dllimport)`, so lib.exe > refuses to produce `lib\LLVM.lib`. > > If I just build static-linked Clang/LLVM (default), it works fine. > > Windows bot of WebAssembly waterfall is also affected: > > https://github.com/WebAssembly/waterfall/commit/2051fd4cdb2b4017e66dfcd70203d40f3d0b461d > > Compiler: Visual Studio 2017 > > CMake configuration: > > cmake -GNinja -Bbuild -Hllvm -DCMAKE_BUILD_TYPE=Release > -DLLVM_INCLUDE_EXAMPLES=OFF > -DLLVM_INCLUDE_TESTS=OFF > -DCMAKE_INSTALL_PREFIX=d:\a\1\b > -DLLVM_TARGETS_TO_BUILD=X86 > -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON > -DLLVM_BUILD_LLVM_DYLIB=ON > -DLLVM_LINK_LLVM_DYLIB=ON > -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170609/6678c058/attachment.html>
Alexander Benikowski via llvm-dev
2017-Jun-09 14:51 UTC
[llvm-dev] Cannot build Clang/LLVM on Windows with LLVM_BUILD_LLVM_DYLIB
@Nakamura Well it is unsupported, because noone added a script to generate the required DEF-File(since it seems noone wants to use export definitions). Somewhere i have a batchscript that does just that and(in theory therefore) even runs from cmake(in the cmake files there is only a script for Mac iirc and none for Windows). Maybe i can find it and someone with cmake expertise can add it to the scripts/proper buildstages 2017-06-09 11:59 GMT+02:00 NAKAMURA Takumi via llvm-dev < llvm-dev at lists.llvm.org>:> It's unsupported on MS toolchain. It's too hard to make LLVM headers and > libs DLL-ready. > It would be theoretically possible on mingw. (oops, it requires awk...) > > On Fri, Jun 9, 2017 at 5:25 PM biologi spm via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> I am trying to build Clang/LLVM with -DLLVM_BUILD_LLVM_DYLIB=ON and >> -DLLVM_LINK_LLVM_DYLIB=ON to reduce the size of toolchain. >> >> I am getting LINK error 1181 about `lib\LLVM.lib` not found. After >> investigating, `lib\LLVM.lib` is supposed to be produced along with >> `bin\LLVM.dll`. `bin\LLVM.dll` is indeed produced, but it does not >> contain any exported symbols (10KB only) because LLVM does not use >> `__declspec(dllexport)` and `__declspec(dllimport)`, so lib.exe >> refuses to produce `lib\LLVM.lib`. >> >> If I just build static-linked Clang/LLVM (default), it works fine. >> >> Windows bot of WebAssembly waterfall is also affected: >> https://github.com/WebAssembly/waterfall/commit/ >> 2051fd4cdb2b4017e66dfcd70203d40f3d0b461d >> >> Compiler: Visual Studio 2017 >> >> CMake configuration: >> >> cmake -GNinja -Bbuild -Hllvm -DCMAKE_BUILD_TYPE=Release >> -DLLVM_INCLUDE_EXAMPLES=OFF >> -DLLVM_INCLUDE_TESTS=OFF >> -DCMAKE_INSTALL_PREFIX=d:\a\1\b >> -DLLVM_TARGETS_TO_BUILD=X86 >> -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON >> -DLLVM_BUILD_LLVM_DYLIB=ON >> -DLLVM_LINK_LLVM_DYLIB=ON >> -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170609/9ea49f41/attachment.html>
biologi spm via llvm-dev
2017-Jun-11 04:04 UTC
[llvm-dev] Cannot build Clang/LLVM on Windows with LLVM_BUILD_LLVM_DYLIB
I am only interested in using Clang/LLVM. clang.exe, clang++.exe, clang-cl.exe, clang-cl.exe and msbuild-bin/cl.exe are each 37MB, but they serve almost the same purpose, just receive different flavours of command flags. By passing -v flag, I noticed that all of them will parse the command flags, then call itself with more command flags for the main parsing and compiling. This is quite similar with gcc.exe, g++.exe, c++.exe and cpp.exe in GCC, but these GCC drivers are much smaller (each around 600KB to 900KB) and they all call another program cc1.exe or cc1plus,exe (each around 20MB). Therefore, GCC toolchain is much smaller. Can Clang/LLVM add a configuration similar to GCC?
Tim Northover via llvm-dev
2017-Jun-11 14:29 UTC
[llvm-dev] Cannot build Clang/LLVM on Windows with LLVM_BUILD_LLVM_DYLIB
On 10 June 2017 at 21:04, biologi spm via llvm-dev <llvm-dev at lists.llvm.org> wrote:> clang.exe, clang++.exe, clang-cl.exe, clang-cl.exe and > msbuild-bin/cl.exe are each 37MB, but they serve almost the same > purpose, just receive different flavours of command flags.On Unix systems these are all symlinks and so essentially free. I hear Windows doesn't cope well with that though so it looks like we just copy the files there.> Can Clang/LLVM add a configuration similar to GCC?That's probably best discussed on the cfe-dev mailing list. Doing it optimally would involve substantial refactoring (essentially splitting lib/Driver out into its own tool). I think you'd be lucky to get anyone to sign up to work on that, but you might be able to convince them patches are welcome. Cheers. Tim.
Joerg Sonnenberger via llvm-dev
2017-Jun-11 19:56 UTC
[llvm-dev] Cannot build Clang/LLVM on Windows with LLVM_BUILD_LLVM_DYLIB
On Sun, Jun 11, 2017 at 12:04:25PM +0800, biologi spm via llvm-dev wrote:> This is quite similar with gcc.exe, g++.exe, c++.exe and cpp.exe in > GCC, but these GCC drivers are much smaller (each around 600KB to > 900KB) and they all call another program cc1.exe or cc1plus,exe (each > around 20MB). Therefore, GCC toolchain is much smaller. > > Can Clang/LLVM add a configuration similar to GCC?You should be able to replace clang++.exe and clang-cpp.exe with a trivial program that uses execvp with clang.exe as file and argv as given to the program. Joerg
Possibly Parallel Threads
- Cannot build Clang/LLVM on Windows with LLVM_BUILD_LLVM_DYLIB
- Building SVN head with CMake - shared libraries?
- build llvm fails under win7 x64/VS2017
- Problem with the way BUILD_SHARED_LIBS=ON handled in llvm 3.8
- CommandLineParser problems with llvm trunk?