[LLVMdev] Is there room for another build system?

Kenneth Boyd
2008-07-31T09:33:27Z

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