arm.toolchain.cmake 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. if(COMMAND toolchain_save_config)
  2. return() # prevent recursive call
  3. endif()
  4. set(CMAKE_SYSTEM_NAME Linux)
  5. set(CMAKE_SYSTEM_VERSION 1)
  6. if(NOT DEFINED CMAKE_SYSTEM_PROCESSOR)
  7. set(CMAKE_SYSTEM_PROCESSOR arm)
  8. else()
  9. #message("CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}")
  10. endif()
  11. include("${CMAKE_CURRENT_LIST_DIR}/gnu.toolchain.cmake")
  12. if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm AND NOT ARM_IGNORE_FP)
  13. set(FLOAT_ABI_SUFFIX "")
  14. if(NOT SOFTFP)
  15. set(FLOAT_ABI_SUFFIX "hf")
  16. endif()
  17. endif()
  18. if(NOT "x${GCC_COMPILER_VERSION}" STREQUAL "x")
  19. set(__GCC_VER_SUFFIX "-${GCC_COMPILER_VERSION}")
  20. endif()
  21. if(NOT DEFINED CMAKE_C_COMPILER)
  22. find_program(CMAKE_C_COMPILER NAMES ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-gcc${__GCC_VER_SUFFIX})
  23. else()
  24. #message(WARNING "CMAKE_C_COMPILER=${CMAKE_C_COMPILER} is defined")
  25. endif()
  26. if(NOT DEFINED CMAKE_CXX_COMPILER)
  27. find_program(CMAKE_CXX_COMPILER NAMES ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-g++${__GCC_VER_SUFFIX})
  28. else()
  29. #message(WARNING "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} is defined")
  30. endif()
  31. if(NOT DEFINED CMAKE_LINKER)
  32. find_program(CMAKE_LINKER NAMES ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-ld${__GCC_VER_SUFFIX} ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-ld)
  33. else()
  34. #message(WARNING "CMAKE_LINKER=${CMAKE_LINKER} is defined")
  35. endif()
  36. if(NOT DEFINED CMAKE_AR)
  37. find_program(CMAKE_AR NAMES ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-ar${__GCC_VER_SUFFIX} ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-ar)
  38. else()
  39. #message(WARNING "CMAKE_AR=${CMAKE_AR} is defined")
  40. endif()
  41. if(NOT DEFINED ARM_LINUX_SYSROOT AND DEFINED GNU_MACHINE)
  42. set(ARM_LINUX_SYSROOT /usr/${GNU_MACHINE}${FLOAT_ABI_SUFFIX})
  43. endif()
  44. # == Compiler flags
  45. if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm)
  46. set(CMAKE_CXX_FLAGS_INIT "-mthumb")
  47. set(CMAKE_C_FLAGS_INIT "-mthumb")
  48. set(common_ld_opt "-Wl,--fix-cortex-a8")
  49. set(CMAKE_SHARED_LINKER_FLAGS_INIT "${common_ld_opt}")
  50. set(CMAKE_MODULE_LINKER_FLAGS_INIT "${common_ld_opt}")
  51. set(CMAKE_EXE_LINKER_FLAGS_INIT "${common_ld_opt} -Wl,-z,nocopyreloc")
  52. elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
  53. include("${CMAKE_CURRENT_LIST_DIR}/flags-aarch64.cmake")
  54. if(COMMAND ocv_set_platform_flags)
  55. ocv_set_platform_flags(CMAKE_CXX_FLAGS_INIT)
  56. ocv_set_platform_flags(CMAKE_C_FLAGS_INIT)
  57. endif()
  58. endif()
  59. if(USE_NEON)
  60. message(WARNING "You use obsolete variable USE_NEON to enable NEON instruction set. Use -DENABLE_NEON=ON instead." )
  61. set(ENABLE_NEON TRUE)
  62. elseif(USE_VFPV3)
  63. message(WARNING "You use obsolete variable USE_VFPV3 to enable VFPV3 instruction set. Use -DENABLE_VFPV3=ON instead." )
  64. set(ENABLE_VFPV3 TRUE)
  65. endif()
  66. set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${ARM_LINUX_SYSROOT})
  67. if(EXISTS ${CUDA_TOOLKIT_ROOT_DIR})
  68. set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CUDA_TOOLKIT_ROOT_DIR})
  69. endif()
  70. set(TOOLCHAIN_CONFIG_VARS ${TOOLCHAIN_CONFIG_VARS}
  71. ARM_LINUX_SYSROOT
  72. ENABLE_NEON
  73. ENABLE_VFPV3
  74. CUDA_TOOLKIT_ROOT_DIR
  75. )
  76. toolchain_save_config()