cmake: update arm toolchain
This commit is contained in:
		
							
								
								
									
										4
									
								
								platforms/linux/aarch64-gnu.toolchain.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								platforms/linux/aarch64-gnu.toolchain.cmake
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| set(CMAKE_SYSTEM_PROCESSOR aarch64) | ||||
| set(GCC_COMPILER_VERSION "4.8" CACHE STRING "GCC Compiler version") | ||||
| set(GNU_MACHINE "aarch64-linux-gnu" CACHE STRING "GNU compiler triple") | ||||
| include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake") | ||||
| @@ -1,88 +1,3 @@ | ||||
| set(CMAKE_SYSTEM_NAME Linux) | ||||
| set(CMAKE_SYSTEM_VERSION 1) | ||||
| set(CMAKE_SYSTEM_PROCESSOR arm) | ||||
|  | ||||
| set(GCC_COMPILER_VERSION "4.6" CACHE STRING "GCC Compiler version") | ||||
|  | ||||
| set(FLOAT_ABI_SUFFIX "") | ||||
| if (NOT SOFTFP) | ||||
|   set(FLOAT_ABI_SUFFIX "hf") | ||||
| endif() | ||||
|  | ||||
| find_program(CMAKE_C_COMPILER NAMES arm-linux-gnueabi${FLOAT_ABI_SUFFIX}-gcc-${GCC_COMPILER_VERSION}) | ||||
| find_program(CMAKE_CXX_COMPILER NAMES arm-linux-gnueabi${FLOAT_ABI_SUFFIX}-g++-${GCC_COMPILER_VERSION}) | ||||
| set(ARM_LINUX_SYSROOT /usr/arm-linux-gnueabi${FLOAT_ABI_SUFFIX} CACHE PATH "ARM cross compilation system root") | ||||
|  | ||||
| set(CMAKE_CXX_FLAGS           ""                    CACHE STRING "c++ flags") | ||||
| set(CMAKE_C_FLAGS             ""                    CACHE STRING "c flags") | ||||
| set(CMAKE_SHARED_LINKER_FLAGS ""                    CACHE STRING "shared linker flags") | ||||
| set(CMAKE_MODULE_LINKER_FLAGS ""                    CACHE STRING "module linker flags") | ||||
| set(CMAKE_EXE_LINKER_FLAGS    "-Wl,-z,nocopyreloc"  CACHE STRING "executable linker flags") | ||||
|  | ||||
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthumb -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") | ||||
| set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS} -mthumb -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") | ||||
|  | ||||
| set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_SHARED_LINKER_FLAGS}") | ||||
| set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_MODULE_LINKER_FLAGS}") | ||||
| set(CMAKE_EXE_LINKER_FLAGS    "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_EXE_LINKER_FLAGS}") | ||||
|  | ||||
| if(USE_NEON) | ||||
|   message(WARNING "You use obsolete variable USE_NEON to enable NEON instruction set. Use -DENABLE_NEON=ON instead." ) | ||||
|   set(ENABLE_NEON TRUE) | ||||
| elseif(USE_VFPV3) | ||||
|   message(WARNING "You use obsolete variable USE_VFPV3 to enable VFPV3 instruction set. Use -DENABLE_VFPV3=ON instead." ) | ||||
|   set(ENABLE_VFPV3 TRUE) | ||||
| endif() | ||||
|  | ||||
| set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${ARM_LINUX_SYSROOT}) | ||||
|  | ||||
| if(EXISTS ${CUDA_TOOLKIT_ROOT_DIR}) | ||||
|     set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CUDA_TOOLKIT_ROOT_DIR}) | ||||
| endif() | ||||
|  | ||||
| set( CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries." ) | ||||
| set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) | ||||
| set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | ||||
| set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) | ||||
|  | ||||
| # 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 ) | ||||
|  if( CMAKE_HOST_WIN32 ) | ||||
|   SET( WIN32 1 ) | ||||
|   SET( UNIX ) | ||||
|  elseif( CMAKE_HOST_APPLE ) | ||||
|   SET( APPLE 1 ) | ||||
|   SET( UNIX ) | ||||
|  endif() | ||||
|  find_program( ${ARGN} ) | ||||
|  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 ) | ||||
| 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 ) | ||||
|  if( CMAKE_HOST_WIN32 ) | ||||
|   SET( WIN32 1 ) | ||||
|   SET( UNIX ) | ||||
|  elseif( CMAKE_HOST_APPLE ) | ||||
|   SET( APPLE 1 ) | ||||
|   SET( UNIX ) | ||||
|  endif() | ||||
|  find_package( ${ARGN} ) | ||||
|  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 ) | ||||
| endmacro() | ||||
| set(GNU_MACHINE "arm-linux-gnueabi" CACHE STRING "GNU compiler triple") | ||||
| include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake") | ||||
|   | ||||
							
								
								
									
										87
									
								
								platforms/linux/arm.toolchain.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								platforms/linux/arm.toolchain.cmake
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | ||||
| if(COMMAND toolchain_save_config) | ||||
|   return() # prevent recursive call | ||||
| endif() | ||||
|  | ||||
| set(CMAKE_SYSTEM_NAME Linux) | ||||
| set(CMAKE_SYSTEM_VERSION 1) | ||||
| if(NOT DEFINED CMAKE_SYSTEM_PROCESSOR) | ||||
|   set(CMAKE_SYSTEM_PROCESSOR arm) | ||||
| else() | ||||
|   #message("CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}") | ||||
| endif() | ||||
|  | ||||
| include("${CMAKE_CURRENT_LIST_DIR}/gnu.toolchain.cmake") | ||||
|  | ||||
| if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm AND NOT ARM_IGNORE_FP) | ||||
|   set(FLOAT_ABI_SUFFIX "") | ||||
|   if(NOT SOFTFP) | ||||
|     set(FLOAT_ABI_SUFFIX "hf") | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| if(NOT "x${GCC_COMPILER_VERSION}" STREQUAL "x") | ||||
|   set(__GCC_VER_SUFFIX "-${GCC_COMPILER_VERSION}") | ||||
| endif() | ||||
|  | ||||
| if(NOT DEFINED CMAKE_C_COMPILER) | ||||
|   find_program(CMAKE_C_COMPILER NAMES ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-gcc${__GCC_VER_SUFFIX}) | ||||
| else() | ||||
|   #message(WARNING "CMAKE_C_COMPILER=${CMAKE_C_COMPILER} is defined") | ||||
| endif() | ||||
| if(NOT DEFINED CMAKE_CXX_COMPILER) | ||||
|   find_program(CMAKE_CXX_COMPILER NAMES ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-g++${__GCC_VER_SUFFIX}) | ||||
| else() | ||||
|   #message(WARNING "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} is defined") | ||||
| endif() | ||||
|  | ||||
| if(NOT DEFINED ARM_LINUX_SYSROOT AND DEFINED GNU_MACHINE) | ||||
|   set(ARM_LINUX_SYSROOT /usr/${GNU_MACHINE}${FLOAT_ABI_SUFFIX}) | ||||
| endif() | ||||
|  | ||||
| if(NOT DEFINED CMAKE_CXX_FLAGS) | ||||
|   set(CMAKE_CXX_FLAGS           "" CACHE INTERAL "") | ||||
|   set(CMAKE_C_FLAGS             "" CACHE INTERAL "") | ||||
|   set(CMAKE_SHARED_LINKER_FLAGS "" CACHE INTERAL "") | ||||
|   set(CMAKE_MODULE_LINKER_FLAGS "" CACHE INTERAL "") | ||||
|   set(CMAKE_EXE_LINKER_FLAGS    "" CACHE INTERAL "") | ||||
|  | ||||
|   set(CMAKE_CXX_FLAGS           "${CMAKE_CXX_FLAGS} -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") | ||||
|   set(CMAKE_C_FLAGS             "${CMAKE_C_FLAGS} -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") | ||||
|   if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm) | ||||
|     set(CMAKE_CXX_FLAGS           "-mthumb ${CMAKE_CXX_FLAGS}") | ||||
|     set(CMAKE_C_FLAGS             "-mthumb ${CMAKE_C_FLAGS}") | ||||
|     set(CMAKE_EXE_LINKER_FLAGS    "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,nocopyreloc") | ||||
|   endif() | ||||
|   if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm) | ||||
|     set(ARM_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now") | ||||
|   elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64) | ||||
|     set(ARM_LINKER_FLAGS "-Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now") | ||||
|   endif() | ||||
|   set(CMAKE_SHARED_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}") | ||||
|   set(CMAKE_MODULE_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}") | ||||
|   set(CMAKE_EXE_LINKER_FLAGS    "${ARM_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}") | ||||
| else() | ||||
|   #message(WARNING "CMAKE_CXX_FLAGS='${CMAKE_CXX_FLAGS}' is defined") | ||||
| endif() | ||||
|  | ||||
| if(USE_NEON) | ||||
|   message(WARNING "You use obsolete variable USE_NEON to enable NEON instruction set. Use -DENABLE_NEON=ON instead." ) | ||||
|   set(ENABLE_NEON TRUE) | ||||
| elseif(USE_VFPV3) | ||||
|   message(WARNING "You use obsolete variable USE_VFPV3 to enable VFPV3 instruction set. Use -DENABLE_VFPV3=ON instead." ) | ||||
|   set(ENABLE_VFPV3 TRUE) | ||||
| endif() | ||||
|  | ||||
| set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${ARM_LINUX_SYSROOT}) | ||||
|  | ||||
| if(EXISTS ${CUDA_TOOLKIT_ROOT_DIR}) | ||||
|   set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CUDA_TOOLKIT_ROOT_DIR}) | ||||
| endif() | ||||
|  | ||||
| set(TOOLCHAIN_CONFIG_VARS ${TOOLCHAIN_CONFIG_VARS} | ||||
|     ARM_LINUX_SYSROOT | ||||
|     ENABLE_NEON | ||||
|     ENABLE_VFPV3 | ||||
|     CUDA_TOOLKIT_ROOT_DIR | ||||
| ) | ||||
| toolchain_save_config() | ||||
							
								
								
									
										106
									
								
								platforms/linux/gnu.toolchain.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								platforms/linux/gnu.toolchain.cmake
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | ||||
| cmake_minimum_required(VERSION 2.8) | ||||
|  | ||||
| # load settings in case of "try compile" | ||||
| set(TOOLCHAIN_CONFIG_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/toolchain.config.cmake") | ||||
| get_property(__IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE) | ||||
| if(__IN_TRY_COMPILE) | ||||
|   include("${CMAKE_CURRENT_SOURCE_DIR}/../toolchain.config.cmake" OPTIONAL) # CMAKE_BINARY_DIR is different | ||||
|   macro(toolchain_save_config) | ||||
|     # nothing | ||||
|   endmacro() | ||||
| else() | ||||
|   macro(toolchain_save_config) | ||||
|     set(__config "#message(\"Load TOOLCHAIN config...\")\n") | ||||
|     get_cmake_property(__variableNames VARIABLES) | ||||
|     set(__vars_list ${ARGN}) | ||||
|     list(APPEND __vars_list | ||||
|         ${TOOLCHAIN_CONFIG_VARS} | ||||
|         CMAKE_SYSTEM_NAME | ||||
|         CMAKE_SYSTEM_VERSION | ||||
|         CMAKE_SYSTEM_PROCESSOR | ||||
|         CMAKE_C_COMPILER | ||||
|         CMAKE_CXX_COMPILER | ||||
|         CMAKE_C_FLAGS | ||||
|         CMAKE_CXX_FLAGS | ||||
|         CMAKE_SHARED_LINKER_FLAGS | ||||
|         CMAKE_MODULE_LINKER_FLAGS | ||||
|         CMAKE_EXE_LINKER_FLAGS | ||||
|         CMAKE_SKIP_RPATH | ||||
|         CMAKE_FIND_ROOT_PATH | ||||
|         GCC_COMPILER_VERSION | ||||
|     ) | ||||
|     foreach(__var ${__variableNames}) | ||||
|       foreach(_v ${__vars_list}) | ||||
|         if("x${__var}" STREQUAL "x${_v}") | ||||
|           if(${__var} MATCHES " ") | ||||
|             set(__config "${__config}set(${__var} \"${${__var}}\")\n") | ||||
|           else() | ||||
|             set(__config "${__config}set(${__var} ${${__var}})\n") | ||||
|           endif() | ||||
|         endif() | ||||
|       endforeach() | ||||
|     endforeach() | ||||
|     if(EXISTS "${TOOLCHAIN_CONFIG_FILE}") | ||||
|       file(READ "${TOOLCHAIN_CONFIG_FILE}" __config_old) | ||||
|     endif() | ||||
|     if("${__config_old}" STREQUAL "${__config}") | ||||
|       # nothing | ||||
|     else() | ||||
|       #message("Update TOOLCHAIN config: ${__config}") | ||||
|       file(WRITE "${TOOLCHAIN_CONFIG_FILE}" "${__config}") | ||||
|     endif() | ||||
|     unset(__config) | ||||
|     unset(__config_old) | ||||
|     unset(__vars_list) | ||||
|     unset(__variableNames) | ||||
|   endmacro() | ||||
| 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) | ||||
|  | ||||
| # 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) | ||||
|  if(CMAKE_HOST_WIN32) | ||||
|   SET(WIN32 1) | ||||
|   SET(UNIX) | ||||
|  elseif(CMAKE_HOST_APPLE) | ||||
|   SET(APPLE 1) | ||||
|   SET(UNIX) | ||||
|  endif() | ||||
|  find_program(${ARGN}) | ||||
|  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) | ||||
| 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) | ||||
|  if(CMAKE_HOST_WIN32) | ||||
|   SET(WIN32 1) | ||||
|   SET(UNIX) | ||||
|  elseif(CMAKE_HOST_APPLE) | ||||
|   SET(APPLE 1) | ||||
|   SET(UNIX) | ||||
|  endif() | ||||
|  find_package(${ARGN}) | ||||
|  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) | ||||
| endmacro() | ||||
|  | ||||
| set(CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries.") | ||||
		Reference in New Issue
	
	Block a user
	 Alexander Alekhin
					Alexander Alekhin