Over the weekend I upgraded my system to Mac OS X 10.8, and now a clean cmake build fails.
The error message:
Building C object runtime/libprofile/CMakeFiles/profile_rt-static.dir/CommonProfiling.c.o
cc1: error: unrecognized command line option "-Wcovered-switch-default"
The configuration:
Mac OS X 10.8
CMake 2.8.8
LLVM tot
Apple clang version 4.0 (tags/Apple/clang-421.0.57) (based on LLVM 3.1svn)
Running cmake to generate the make files gives the following output:
-- The C compiler identification is GNU 4.2.1
-- The CXX compiler identification is Clang 4.0.0
Diagnosis:
cmake is passing "-Wcovered-switch-default" to the c compiler.
It also thinks that the c compiler should be gcc, rather than clang.
gcc does not support that switch, and fails.
Possible solutions:
* use clang to compile the C code (note that /usr/bin/cc is clang on this system; why it's picking gcc, I don't know)
* Don't pass "-Wcovered-switch-default" to the C compiler.
-- Marshall
Marshall Clow Idio Software <mailto:mclow.lists@gmail.com>
A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait).
-- Yu Suzuki
A workaround - force use of clang for C compilations:
CC=/usr/bin/cc cmake $LLVM/llvm
-- Marshall
Marshall Clow Idio Software <mailto:mclow.lists@gmail.com>
A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait).
-- Yu Suzuki
This is a problem in CMake; for a C compiler, it always picks a 'gcc'
executable in the PATH over a 'cc' executable. See the file
/opt/local/share/cmake-2.8/Modules/CMakeDetermineCCompiler.cmake, where
it has:
[...]
SET(CMAKE_C_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}gcc ${_CMAKE_TOOLCHAIN_PREFIX}cc cl bcc xlc)
Maybe this was done, because some systems used to have a bad default cc?
Like Solaris? I don't think that reasoning is really valid anymore,
these days, though.
In any case, I usually just add these to the cmake invocation, just to
be sure:
-DCMAKE_C_COMPILER=/usr/bin/cc -DCMAKE_CXX_COMPILER=/usr/bin/c++
Dimitry Andric <dimitry@andric.com> writes:
This is a problem in CMake; for a C compiler, it always picks a 'gcc'
executable in the PATH over a 'cc' executable. See the file
/opt/local/share/cmake-2.8/Modules/CMakeDetermineCCompiler.cmake, where
it has:
[...]
SET(CMAKE_C_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}gcc ${_CMAKE_TOOLCHAIN_PREFIX}cc cl bcc xlc)
Maybe this was done, because some systems used to have a bad default cc?
Like Solaris? I don't think that reasoning is really valid anymore,
these days, though.
I passed your remark to the CMake developers and they swiftly fixed the
issue:
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=27b74445
CMake version 2.8.9 already is in final RC stage, so the change will
appear on version 2.8.10.
Thanks.
[snip]