cmake: fix gnu.toolchain
authorAlexander Alekhin <alexander.a.alekhin@gmail.com>
Tue, 30 Jan 2018 18:29:18 +0000 (18:29 +0000)
committerAlexander Alekhin <alexander.a.alekhin@gmail.com>
Tue, 30 Jan 2018 18:29:18 +0000 (18:29 +0000)
- CMAKE_FIND_ROOT_PATH_MODE_PROGRAM: ONLY => NEVER
- update handling of CMAKE_FIND_ROOT_PATH_MODE_* variables

platforms/linux/gnu.toolchain.cmake

index 4050d83..fc53dbf 100644 (file)
@@ -57,15 +57,51 @@ else()
 endif() # IN_TRY_COMPILE
 
 set(CMAKE_SKIP_RPATH TRUE)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
+
+if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
+  set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+endif()
+
+if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
+  set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+endif()
+
+if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
+  set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+endif()
+
+if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
+  set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+endif()
+
+macro(__cmake_find_root_save_and_reset)
+  foreach(v
+      CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
+      CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
+      CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
+      CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
+  )
+    set(__save_${v} ${${v}})
+    set(${v} NEVER)
+  endforeach()
+endmacro()
+
+macro(__cmake_find_root_restore)
+  foreach(v
+      CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
+      CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
+      CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
+      CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
+  )
+    set(${v} ${__save_${v}})
+    unset(__save_${v})
+  endforeach()
+endmacro()
+
 
 # macro to find programs on the host OS
 macro(find_host_program)
- set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
- set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
- set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
+ __cmake_find_root_save_and_reset()
  if(CMAKE_HOST_WIN32)
   SET(WIN32 1)
   SET(UNIX)
@@ -77,16 +113,12 @@ macro(find_host_program)
  SET(WIN32)
  SET(APPLE)
  SET(UNIX 1)
- set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
- set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
- set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+ __cmake_find_root_restore()
 endmacro()
 
 # macro to find packages on the host OS
 macro(find_host_package)
- set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
- set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
- set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
+ __cmake_find_root_save_and_reset()
  if(CMAKE_HOST_WIN32)
   SET(WIN32 1)
   SET(UNIX)
@@ -98,9 +130,7 @@ macro(find_host_package)
  SET(WIN32)
  SET(APPLE)
  SET(UNIX 1)
- set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
- set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
- set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+ __cmake_find_root_restore()
 endmacro()
 
 set(CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries.")