opencv

Форк
0
/
ppcat.toolchain.cmake 
129 строк · 4.3 Кб
1
if(COMMAND toolchain_save_config)
2
  return() # prevent recursive call
3
endif()
4

5
option(AT_PATH        "Advance Toolchain directory" "")
6
option(AT_RPATH       "Add new directories to runtime search path" "")
7
option(AT_HOST_LINK   "Enable/disable Link against host advance toolchain runtime" OFF)
8
option(AT_NO_AUTOVEC  "Disable/enable Auto Vectorizer optimization" OFF)
9

10
set(CMAKE_SYSTEM_NAME Linux)
11
set(CMAKE_SYSTEM_VERSION 1)
12

13
include("${CMAKE_CURRENT_LIST_DIR}/gnu.toolchain.cmake")
14

15
if(NOT DEFINED CMAKE_C_COMPILER)
16
  string(REGEX REPLACE "/+$" "" AT_PATH "${AT_PATH}")
17

18
  if(NOT AT_PATH)
19
    message(FATAL_ERROR "'AT_PATH' option is required. Please set it to Advance Toolchain path to get toolchain works")
20
  endif()
21

22
  if(NOT EXISTS ${AT_PATH})
23
    message(FATAL_ERROR "'${AT_PATH}' Advance Toolchain path isn't exist")
24
  endif()
25

26
  set(CMAKE_C_COMPILER "${AT_PATH}/bin/${GNU_MACHINE}-gcc")
27

28
  if(NOT EXISTS ${CMAKE_C_COMPILER})
29
    message(FATAL_ERROR "GNU C compiler isn't exist on path '${CMAKE_C_COMPILER}'. Please install Advance Toolchain with ${CMAKE_SYSTEM_PROCESSOR} supports")
30
  endif()
31
endif()
32

33
if(NOT DEFINED CMAKE_CXX_COMPILER)
34
  set(CMAKE_CXX_COMPILER "${AT_PATH}/bin/${GNU_MACHINE}-g++")
35

36
  if(NOT EXISTS ${CMAKE_CXX_COMPILER})
37
    message(FATAL_ERROR "GNU C++ compiler isn't exist. Invalid install of Advance Toolchain")
38
  endif()
39
endif()
40

41
if(NOT DEFINED AT_GCCROOT_PATH)
42
  set(AT_GCCROOT_PATH "${AT_PATH}/${GNU_MACHINE}")
43

44
  if(NOT EXISTS ${AT_GCCROOT_PATH})
45
    message(FATAL_ERROR "GCC root path '${AT_GCCROOT_PATH}' isn't exist. Invalid install of Advance Toolchain")
46
  endif()
47
endif()
48

49
if(NOT DEFINED AT_SYSROOT_PATH)
50
  if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "ppc64")
51
    set(AT_SYSROOT_PATH "${AT_PATH}/ppc")
52
  else()
53
    set(AT_SYSROOT_PATH "${AT_PATH}/${CMAKE_SYSTEM_PROCESSOR}")
54
  endif()
55

56
  if(NOT EXISTS ${AT_SYSROOT_PATH})
57
    message(FATAL_ERROR "System root path '${AT_SYSROOT_PATH}' isn't exist. Invalid install of Advance Toolchain")
58
  endif()
59
endif()
60

61
if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS)
62
  set(CMAKE_CXX_FLAGS           "" CACHE INTERNAL "")
63
  set(CMAKE_C_FLAGS             "" CACHE INTERNAL "")
64
  set(CMAKE_EXE_LINKER_FLAGS    "" CACHE INTERNAL "")
65
  set(CMAKE_SHARED_LINKER_FLAGS "" CACHE INTERNAL "")
66
  set(CMAKE_MODULE_LINKER_FLAGS "" CACHE INTERNAL "")
67

68
  if(AT_RPATH)
69
    string(REPLACE "," ";" RPATH_LIST ${AT_RPATH})
70
  endif()
71

72
  if(AT_HOST_LINK)
73
    #get 64-bit dynamic linker path
74
    file(STRINGS "${AT_SYSROOT_PATH}/usr/bin/ldd" RTLDLIST LIMIT_COUNT 1 REGEX "^RTLDLIST=[\"*\"]")
75
    string(REGEX REPLACE "RTLDLIST=|\"" "" RTLDLIST "${RTLDLIST}")
76
    string(REPLACE " " ";" RTLDLIST "${RTLDLIST}")
77

78
    #RTLDLIST must contains 32 and 64 bit paths
79
    list(LENGTH RTLDLIST RTLDLIST_LEN)
80
    if(NOT RTLDLIST_LEN GREATER 1)
81
      message(FATAL_ERROR "Could not fetch dynamic linker path. Invalid install of Advance Toolchain")
82
    endif()
83

84
    list (GET RTLDLIST 1 LINKER_PATH)
85
    set(CMAKE_EXE_LINKER_FLAGS "-Wl,--dynamic-linker=${AT_SYSROOT_PATH}${LINKER_PATH}")
86

87
    list(APPEND RPATH_LIST "${AT_GCCROOT_PATH}/lib64/")
88
    list(APPEND RPATH_LIST "${AT_SYSROOT_PATH}/lib64/")
89
    list(APPEND RPATH_LIST "${AT_SYSROOT_PATH}/usr/lib64/")
90
    list(APPEND RPATH_LIST "${PROJECT_BINARY_DIR}/lib/")
91
  endif()
92

93
  list(LENGTH RPATH_LIST RPATH_LEN)
94
  if(RPATH_LEN GREATER 0)
95
    set(AT_LINKER_FLAGS "${AT_LINKER_FLAGS} -Wl")
96
    foreach(RPATH ${RPATH_LIST})
97
      set(AT_LINKER_FLAGS "${AT_LINKER_FLAGS},-rpath,${RPATH}")
98
    endforeach()
99
  endif()
100

101
  set(CMAKE_SHARED_LINKER_FLAGS "${AT_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}")
102
  set(CMAKE_MODULE_LINKER_FLAGS "${AT_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}")
103
  set(CMAKE_EXE_LINKER_FLAGS    "${AT_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")
104

105
  if(AT_NO_AUTOVEC)
106
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-tree-vectorize -fno-tree-slp-vectorize")
107
    set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS} -fno-tree-vectorize -fno-tree-slp-vectorize")
108
  endif()
109

110
endif()
111

112
set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${AT_SYSROOT_PATH} ${AT_GCCROOT_PATH})
113
set(CMAKE_SYSROOT ${AT_SYSROOT_PATH})
114

115
# what about ld.gold?
116
if(NOT DEFINED CMAKE_LINKER)
117
  find_program(CMAKE_LINKER NAMES ld)
118
endif()
119

120
if(NOT DEFINED CMAKE_AR)
121
  find_program(CMAKE_AR NAMES ar)
122
endif()
123

124
set(TOOLCHAIN_CONFIG_VARS ${TOOLCHAIN_CONFIG_VARS}
125
    CMAKE_SYSROOT
126
    AT_SYSROOT_PATH
127
    AT_GCCROOT_PATH
128
)
129
toolchain_save_config()
130

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

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

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

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