blob: b21dad213dab1278d3bfdbe50bf08484e3e060d8 [file] [log] [blame]
James Kuszmaulcf324122023-01-14 14:07:17 -08001cmake_minimum_required(VERSION 3.3.0)
Brian Silverman8fce7482020-01-05 13:18:21 -08002
3# load settings in case of "try compile"
Austin Schuh812d0d12021-11-04 20:16:48 -07004set(TOOLCHAIN_CONFIG_FILE "${WPILIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/toolchain.config.cmake")
Brian Silverman8fce7482020-01-05 13:18:21 -08005get_property(__IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE)
6if(__IN_TRY_COMPILE)
Austin Schuh812d0d12021-11-04 20:16:48 -07007 include("${CMAKE_CURRENT_SOURCE_DIR}/../toolchain.config.cmake" OPTIONAL) # WPILIB_BINARY_DIR is different
Brian Silverman8fce7482020-01-05 13:18:21 -08008 macro(toolchain_save_config)
9 # nothing
10 endmacro()
11else()
12 macro(toolchain_save_config)
13 set(__config "#message(\"Load TOOLCHAIN config...\")\n")
14 get_cmake_property(__variableNames VARIABLES)
15 set(__vars_list ${ARGN})
16 list(APPEND __vars_list
17 ${TOOLCHAIN_CONFIG_VARS}
18 CMAKE_SYSTEM_NAME
19 CMAKE_SYSTEM_VERSION
20 CMAKE_SYSTEM_PROCESSOR
21 CMAKE_C_COMPILER
22 CMAKE_CXX_COMPILER
23 CMAKE_C_FLAGS
24 CMAKE_CXX_FLAGS
25 CMAKE_SHARED_LINKER_FLAGS
26 CMAKE_MODULE_LINKER_FLAGS
27 CMAKE_EXE_LINKER_FLAGS
28 CMAKE_SKIP_RPATH
29 CMAKE_FIND_ROOT_PATH
30 GCC_COMPILER_VERSION
31 )
32 foreach(__var ${__variableNames})
33 foreach(_v ${__vars_list})
34 if("x${__var}" STREQUAL "x${_v}")
35 if(${__var} MATCHES " ")
36 set(__config "${__config}set(${__var} \"${${__var}}\")\n")
37 else()
38 set(__config "${__config}set(${__var} ${${__var}})\n")
39 endif()
40 endif()
41 endforeach()
42 endforeach()
43 if(EXISTS "${TOOLCHAIN_CONFIG_FILE}")
44 file(READ "${TOOLCHAIN_CONFIG_FILE}" __config_old)
45 endif()
46 if("${__config_old}" STREQUAL "${__config}")
47 # nothing
48 else()
49 #message("Update TOOLCHAIN config: ${__config}")
50 file(WRITE "${TOOLCHAIN_CONFIG_FILE}" "${__config}")
51 endif()
52 unset(__config)
53 unset(__config_old)
54 unset(__vars_list)
55 unset(__variableNames)
56 endmacro()
57endif() # IN_TRY_COMPILE
58
59if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
60 set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
61endif()
62
63if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
64 set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
65endif()
66
67if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
68 set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
69endif()
70
71if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
72 set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
73endif()
74
75macro(__cmake_find_root_save_and_reset)
76 foreach(v
77 CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
78 CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
79 CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
80 CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
81 )
82 set(__save_${v} ${${v}})
83 set(${v} NEVER)
84 endforeach()
85endmacro()
86
87macro(__cmake_find_root_restore)
88 foreach(v
89 CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
90 CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
91 CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
92 CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
93 )
94 set(${v} ${__save_${v}})
95 unset(__save_${v})
96 endforeach()
97endmacro()
98
99
100# macro to find programs on the host OS
101macro(find_host_program)
102 __cmake_find_root_save_and_reset()
103 if(CMAKE_HOST_WIN32)
104 SET(WIN32 1)
105 SET(UNIX)
106 elseif(CMAKE_HOST_APPLE)
107 SET(APPLE 1)
108 SET(UNIX)
109 endif()
110 find_program(${ARGN})
111 SET(WIN32)
112 SET(APPLE)
113 SET(UNIX 1)
114 __cmake_find_root_restore()
115endmacro()
116
117# macro to find packages on the host OS
118macro(find_host_package)
119 __cmake_find_root_save_and_reset()
120 if(CMAKE_HOST_WIN32)
121 SET(WIN32 1)
122 SET(UNIX)
123 elseif(CMAKE_HOST_APPLE)
124 SET(APPLE 1)
125 SET(UNIX)
126 endif()
127 find_package(${ARGN})
128 SET(WIN32)
129 SET(APPLE)
130 SET(UNIX 1)
131 __cmake_find_root_restore()
132endmacro()
133
134set(CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries.")