From c8dd1caff941ac4f56bf7422437fc0982ab6043b Mon Sep 17 00:00:00 2001 From: Alexander Neundorf Date: Mon, 21 May 2007 10:58:04 -0400 Subject: [PATCH] BUG: don't fail if a compiler is given in CMAKE_C/CXX_COMPILER but it can't be found in the path Alex --- Modules/CMakeDetermineCCompiler.cmake | 9 +++++++-- Modules/CMakeDetermineCXXCompiler.cmake | 12 ++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake index 0ee390bbf..fd46bd6d6 100644 --- a/Modules/CMakeDetermineCCompiler.cmake +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -63,12 +63,17 @@ IF(NOT CMAKE_C_COMPILER) ELSE(NOT CMAKE_C_COMPILER) # if a compiler was specified by the user but without path, - # now try to find it with the full path and force it into the cache + # now try to find it with the full path + # if it is found, force it into the cache, + # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND" + # if the C compiler already had a path, reuse it for searching the CXX compiler GET_FILENAME_COMPONENT(_CMAKE_USER_C_COMPILER_PATH "${CMAKE_C_COMPILER}" PATH) IF(NOT _CMAKE_USER_C_COMPILER_PATH) FIND_PROGRAM(CMAKE_C_COMPILER_WITH_PATH NAMES ${CMAKE_C_COMPILER}) MARK_AS_ADVANCED(CMAKE_C_COMPILER_WITH_PATH) - SET(CMAKE_C_COMPILER ${CMAKE_C_COMPILER_WITH_PATH} CACHE FILEPATH "C compiler" FORCE) + IF(CMAKE_C_COMPILER_WITH_PATH) + SET(CMAKE_C_COMPILER ${CMAKE_C_COMPILER_WITH_PATH} CACHE FILEPATH "C compiler" FORCE) + ENDIF(CMAKE_C_COMPILER_WITH_PATH) ENDIF(NOT _CMAKE_USER_C_COMPILER_PATH) ENDIF(NOT CMAKE_C_COMPILER) MARK_AS_ADVANCED(CMAKE_C_COMPILER) diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake index 41b5e475d..d278c45ee 100644 --- a/Modules/CMakeDetermineCXXCompiler.cmake +++ b/Modules/CMakeDetermineCXXCompiler.cmake @@ -60,13 +60,21 @@ IF(NOT CMAKE_CXX_COMPILER) ENDIF(CMAKE_CXX_COMPILER_INIT AND NOT CMAKE_CXX_COMPILER) ELSE(NOT CMAKE_CXX_COMPILER) +# we only get here if CMAKE_CXX_COMPILER was specified using -D or a pre-made CMakeCache.txt +# (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE +# # if a compiler was specified by the user but without path, -# now try to find it with the full path and force it into the cache +# now try to find it with the full path +# if it is found, force it into the cache, +# if not, don't overwrite the setting (which was given by the user) with "NOTFOUND" +# if the CXX compiler already had a path, reuse it for searching the C compiler GET_FILENAME_COMPONENT(_CMAKE_USER_CXX_COMPILER_PATH "${CMAKE_CXX_COMPILER}" PATH) IF(NOT _CMAKE_USER_CXX_COMPILER_PATH) FIND_PROGRAM(CMAKE_CXX_COMPILER_WITH_PATH NAMES ${CMAKE_CXX_COMPILER}) MARK_AS_ADVANCED(CMAKE_CXX_COMPILER_WITH_PATH) - SET(CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER_WITH_PATH} CACHE FILEPATH "CXX compiler" FORCE) + IF(CMAKE_CXX_COMPILER_WITH_PATH) + SET(CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER_WITH_PATH} CACHE FILEPATH "CXX compiler" FORCE) + ENDIF(CMAKE_CXX_COMPILER_WITH_PATH) ENDIF(NOT _CMAKE_USER_CXX_COMPILER_PATH) ENDIF(NOT CMAKE_CXX_COMPILER) MARK_AS_ADVANCED(CMAKE_CXX_COMPILER)