opencv

Форк
0
/
gnu.toolchain.cmake 
134 строки · 3.5 Кб
1
cmake_minimum_required(VERSION 3.5)
2

3
# load settings in case of "try compile"
4
set(TOOLCHAIN_CONFIG_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/toolchain.config.cmake")
5
get_property(__IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE)
6
if(__IN_TRY_COMPILE)
7
  include("${CMAKE_CURRENT_SOURCE_DIR}/../toolchain.config.cmake" OPTIONAL) # CMAKE_BINARY_DIR is different
8
  macro(toolchain_save_config)
9
    # nothing
10
  endmacro()
11
else()
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()
57
endif() # IN_TRY_COMPILE
58

59
if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
60
  set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
61
endif()
62

63
if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
64
  set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
65
endif()
66

67
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
68
  set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
69
endif()
70

71
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
72
  set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
73
endif()
74

75
macro(__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()
85
endmacro()
86

87
macro(__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()
97
endmacro()
98

99

100
# macro to find programs on the host OS
101
macro(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()
115
endmacro()
116

117
# macro to find packages on the host OS
118
macro(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()
132
endmacro()
133

134
set(CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries.")
135

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.