From 72d6681826840c0a14be61d19c71a55f280d38ae Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 5 Sep 2014 11:59:35 -0400 Subject: Fix finding binutils when cross-compiling with Clang Since commit v3.0.0-rc1~342^2~2 (Add compiler target compile options, 2013-05-19) we use CMAKE__COMPILER_TARGET as the binutils prefix when cross-compiling with Clang. Fix the implementation to use the compiler target as the prefix only when it is set. Otherwise toolchain files not using CMAKE__COMPILER_TARGET cause the logic to use a prefix of just "-" and of course cannot find "-ar" or "-ld". --- Modules/CMakeDetermineCCompiler.cmake | 4 +++- Modules/CMakeDetermineCXXCompiler.cmake | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake index aa4cdc9..2b8ecdc 100644 --- a/Modules/CMakeDetermineCCompiler.cmake +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -136,7 +136,9 @@ if (CMAKE_CROSSCOMPILING AND NOT _CMAKE_TOOLCHAIN_PREFIX) if (COMPILER_BASENAME MATCHES "^(.+-)(clang|g?cc)(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$") set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1}) elseif("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") - set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_C_COMPILER_TARGET}-) + if(CMAKE_C_COMPILER_TARGET) + set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_C_COMPILER_TARGET}-) + endif() elseif(COMPILER_BASENAME MATCHES "qcc(\\.exe)?$") if(CMAKE_C_COMPILER_TARGET MATCHES "gcc_nto([^_le]+)(le)?.*$") set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-) diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake index ef8445e..9af1de1 100644 --- a/Modules/CMakeDetermineCXXCompiler.cmake +++ b/Modules/CMakeDetermineCXXCompiler.cmake @@ -133,7 +133,9 @@ if (CMAKE_CROSSCOMPILING AND NOT _CMAKE_TOOLCHAIN_PREFIX) if (COMPILER_BASENAME MATCHES "^(.+-)(clan)?[gc]\\+\\+(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$") set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1}) elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_CXX_COMPILER_TARGET}-) + if(CMAKE_CXX_COMPILER_TARGET) + set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_CXX_COMPILER_TARGET}-) + endif() elseif(COMPILER_BASENAME MATCHES "QCC(\\.exe)?$") if(CMAKE_CXX_COMPILER_TARGET MATCHES "gcc_nto([^_le]+)(le)?.*$") set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-) -- cgit v0.12