summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFred Baksik <fdk17@ftml.net>2020-07-15 19:03:45 (GMT)
committerFred Baksik <fred.baksik@mrcy.com>2020-07-29 15:51:18 (GMT)
commit12ba89e142c3db629e6e201a409b4c08bb169bdc (patch)
treedd8dcc751e0f7e9980cdc9262c0f86ab8c15fcd4
parent6f1af899db4e93c960145dae12ebaacb308ea1f0 (diff)
downloadCMake-12ba89e142c3db629e6e201a409b4c08bb169bdc.zip
CMake-12ba89e142c3db629e6e201a409b4c08bb169bdc.tar.gz
CMake-12ba89e142c3db629e6e201a409b4c08bb169bdc.tar.bz2
Toolchain: Make `/path/comp;-argn' behave the same as 'comp;-argn'
When using `cmake ... -DCMAKE_C_COMPILER=gcc;-pipe` first invocation of CMake worked correctly. When using `cmake ... -DCMAKE_C_COMPILER=/path/to/gcc;-pipe` first invocation of CMake detected a change to CMAKE_C_COMPILER, printed "You have changed variables" message, and re-ran the initial compiler tests after configuration was complete and before generation of the project files. The difference was due to the cache being forced updated with the new value of CMAKE_C_COMPILER so that the comparison check passes.
-rw-r--r--Modules/CMakeDetermineCompiler.cmake7
1 files changed, 7 insertions, 0 deletions
diff --git a/Modules/CMakeDetermineCompiler.cmake b/Modules/CMakeDetermineCompiler.cmake
index 142e61e..a1da441 100644
--- a/Modules/CMakeDetermineCompiler.cmake
+++ b/Modules/CMakeDetermineCompiler.cmake
@@ -114,6 +114,7 @@ macro(_cmake_find_compiler_path lang)
list(JOIN CMAKE_${lang}_COMPILER_ARG1 " " CMAKE_${lang}_COMPILER_ARG1)
# find the compiler in the PATH if necessary
+ # if compiler (and arguments) comes from cache then synchronize cache with updated CMAKE_<LANG>_COMPILER
get_filename_component(_CMAKE_USER_${lang}_COMPILER_PATH "${CMAKE_${lang}_COMPILER}" PATH)
if(NOT _CMAKE_USER_${lang}_COMPILER_PATH)
find_program(CMAKE_${lang}_COMPILER_WITH_PATH NAMES ${CMAKE_${lang}_COMPILER})
@@ -126,6 +127,12 @@ macro(_cmake_find_compiler_path lang)
unset(_CMAKE_${lang}_COMPILER_CACHED)
endif()
unset(CMAKE_${lang}_COMPILER_WITH_PATH CACHE)
+ elseif (EXISTS ${CMAKE_${lang}_COMPILER})
+ get_property(_CMAKE_${lang}_COMPILER_CACHED CACHE CMAKE_${lang}_COMPILER PROPERTY TYPE)
+ if(_CMAKE_${lang}_COMPILER_CACHED)
+ set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER}" CACHE STRING "${lang} compiler" FORCE)
+ endif()
+ unset(_CMAKE_${lang}_COMPILER_CACHED)
endif()
endif()
endmacro()