[LLVMdev] Is there room for another build system?

Kenneth Boyd zaimoni at zaimoni.com
Thu Jul 31 02:33:27 PDT 2008


Albert Graef wrote:
> Albert Graef wrote:
>   
>> The broken mingw support (as pointed out by Stuart) [...]
>>     
>
> s/Stuart/Kenneth/ Sorry.
>   
No problem.  Just to be clear, I think bringing up the CMake build 
system for LLVM is a good idea.  It should handle not only the various 
MSVC's going all the way back to MSVC 6.0, but presumably should cover 
at least some others, (OpenWatcom, and at least some of the Eclipse and 
CodeBlocks IDE configurations).  CMake and autoconf cover glaring holes 
in each others' coverage; I'd like to see both build systems maintained 
in parallel.

Incidentally, some versions of the autoconf system are also affected by 
the filepath convention confusion between Cygwin and MingW32.   (E.g., 
the one generating GMP 4.2.2's makefile.  But not LLVM's, or very recent 
versions of autoconf such the one used for MPFR 2.3.1; GCC 4.3.1's is 
also unaffected).  CMake is designed to be fragile; autoconf is designed 
to be robust.

The autoconf system actually gives me a GNU makefile that I often can 
repair even when it fails.  This particular confusion is a routine fix 
(just eradicate the CYGPATH_W variable from the makefile).  Maybe two 
extra minutes to work around.

If *either* of the MSYS or MinGW CMake options could have been forced to 
give me a makefile, it is very plausible the makefile would have been 
routinely repairable.  In that case I would have considered CMake usable 
for building CMake.  But with a bad "is gcc working" test, and no 
clearly documented way to override this test: failure.

The other critical design error was using full paths gratuitiously:
  /C/usr/bin/cmake.exe -E cmake_progress_report
  /C/MingWin.aux/cmake-2.6.0/Source/CMakeFiles/CMakeTmp/CMakeFiles 1

This would work fine on Cygwin, but (using bash as the command shell) 
the corresponding full-paths on MingW32 would be
  c:/usr/bin/cmake.exe -E cmake_progress_report
  c:/MingWin.aux/cmake-2.6.0/Source/CMakeFiles/CMakeTmp/CMakeFiles 1

I haven't taken a careful look at how to fix this.

Kenneth




More information about the llvm-dev mailing list