The problem is that CMake does not call the linker. It invokes the linker by 
calling the compiler and passing flags through it.

In the module, Darwin.cmake, you find:


SET(CMAKE_C_LINK_FLAGS "-Wl,-headerpad_max_install_names")
SET(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names")


But in Darwin-icc.cmake, you find:

SET(CMAKE_C_LINK_FLAGS "-headerpad_max_install_names")
SET(CMAKE_CXX_LINK_FLAGS "-headerpad_max_install_names")

Changing the latter to match the former should fix the issue.

However, IMHO, a correct implementation would either call the linker directly 
or "escape" the flags (with the "-Wl," prefix) so that they get passed 
correctly.

On Dec 22, 2010, at 2:03 PM, Cochran, Bill wrote:

> I was wondering if anyone has seen a problem like this before.  It appears 
> cmake is not passing arguments to the linker correctly.
> 
> 
>    ===============
>    Configuring AMP
>    ===============
>    -- The C compiler identification is GNU
>    -- The CXX compiler identification is GNU
>    -- Checking whether C compiler has -isysroot
>    -- Checking whether C compiler has -isysroot - yes
>    -- Checking whether C compiler supports OSX deployment target flag
>    -- Checking whether C compiler supports OSX deployment target flag - yes
>    -- Check for working C compiler: /opt/openmpi-1.3.2-gcc-4.6-debug/bin/mpicc
>    -- Check for working C compiler: 
> /opt/openmpi-1.3.2-gcc-4.6-debug/bin/mpicc -- broken
>    CMake Error at /:opt:cmake/CMake 
> 2.8-3.app/Contents/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 
> (MESSAGE):
>      The C compiler "/opt/openmpi-1.3.2-gcc-4.6-debug/bin/mpicc" is not able 
> to
>      compile a simple test program.
>      It fails with the following output:
>       Change Dir: /Users/zfw/repository/amp/build/debug/CMakeFiles/CMakeTmp
>      Run Build Command:/usr/bin/make "cmTryCompileExec/fast"
> 
> - Ignored:
>      /usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make
>      CMakeFiles/cmTryCompileExec.dir/build
> 
>      "/:opt:cmake/CMake 2.8-3.app/Contents/bin/cmake" -E cmake_progress_report
>      /Users/zfw/repository/amp/build/debug/CMakeFiles/CMakeTmp/CMakeFiles 1
> 
>      Building C object CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o
> 
>      /opt/openmpi-1.3.2-gcc-4.6-debug/bin/mpicc -o
>      CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o -c
>      /Users/zfw/repository/amp/build/debug/CMakeFiles/CMakeTmp/testCCompiler.c
> 
>      Linking C executable cmTryCompileExec
> 
>      "/:opt:cmake/CMake 2.8-3.app/Contents/bin/cmake" -E cmake_link_script
>      CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1
> 
>      /opt/openmpi-1.3.2-gcc-4.6-debug/bin/mpicc -Wl,-search_paths_first
>      -headerpad_max_install_names
>      CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o -o cmTryCompileExec
> 
>      gcc: error: unrecognized option '-h'
> 
>      make[1]: *** [cmTryCompileExec] Error 1
> 
>      make: *** [cmTryCompileExec/fast] Error 2
> 
> 
> 
> 
> 
>      CMake will not be able to correctly generate this project.
>    Call Stack (most recent call first):
>      CMakeLists.txt:17 (PROJECT)
> 
> 
>    -- Configuring incomplete, errors occurred!
> 
> 
>    For some reason, the linker flag ?headerpad_max_install_names is not being 
> prefixed with ?Wl,.  Any thoughts?
> 
>    Bill
> _______________________________________________
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at 
> http://www.kitware.com/opensource/opensource.html
> 
> Please keep messages on-topic and check the CMake FAQ at: 
> http://www.cmake.org/Wiki/CMake_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to