CMakeSystemSpecificInformation.cmake 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. # this module sets system information like how to build libraries
  2. # before including this file the system, C, and C++ compilers must
  3. # have already been determined.
  4. # This file first sets default variables that can be used for most
  5. # makefiles. Next, it will include a system specific file. Finally,
  6. # it will optionally include a system and compiler specific file that
  7. # can be used to override any of this information.
  8. # For debugging new systems, and expert users, if the
  9. # CMAKE_USER_MAKE_RULES_OVERRIDE is set to a file name, that
  10. # file will be included last, and can override any variable
  11. # 1. set default values that will work for most system
  12. SET(CMAKE_STATIC_LIBRARY_PREFIX "lib")
  13. SET(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
  14. SET(CMAKE_SHARED_LIBRARY_C_FLAGS "") # -pic
  15. SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "") # -pic
  16. SET(CMAKE_SHARED_LIBRARY_CREATE_FLAGS "") # -shared
  17. SET(CMAKE_SHARED_LIBRARY_PREFIX "lib") # lib
  18. SET(CMAKE_SHARED_LIBRARY_SUFFIX ".so") # .so
  19. SET(CMAKE_SHARED_LIBRARY_LINK_FLAGS "") # +s, flag for exe link to use shared lib
  20. SET(CMAKE_SHARED_LIBRARY_RUNTIME_FLAG "") # -rpath
  21. SET(CMAKE_SHARED_LIBRARY_RUNTIME_FLAG_SEP "") # : or empty
  22. SET(CMAKE_LIBRARY_PATH_FLAG "-L")
  23. SET(CMAKE_LINK_LIBRARY_FLAG "-l")
  24. IF(CMAKE_COMPILER_IS_GNUGXX)
  25. SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC") # -pic
  26. SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-fPIC") # -pic
  27. ENDIF(CMAKE_COMPILER_IS_GNUGXX)
  28. SET (CMAKE_SKIP_RPATH "NO" CACHE BOOL
  29. "If set, runtime paths are not added when using shared libraries.")
  30. # 2. now include SystemName.cmake file to set the system specific information
  31. SET(CMAKE_SYSTEM_INFO_FILE ${CMAKE_ROOT}/Modules/${CMAKE_SYSTEM_NAME}.cmake)
  32. IF(EXISTS ${CMAKE_SYSTEM_INFO_FILE})
  33. INCLUDE(${CMAKE_SYSTEM_INFO_FILE})
  34. ELSE(EXISTS ${CMAKE_SYSTEM_INFO_FILE})
  35. MESSAGE("System is unknown to cmake, create:\n${CMAKE_SYSTEM_INFO_FILE}"
  36. " to use this system, please send your config file to "
  37. "[email protected] so it can be added to cmake"")
  38. ENDIF(EXISTS ${CMAKE_SYSTEM_INFO_FILE})
  39. # 3. include optional systemname-compiler.cmake files
  40. IF(CMAKE_C_COMPILER)
  41. GET_FILENAME_COMPONENT(CMAKE_BASE_NAME ${CMAKE_C_COMPILER} NAME_WE)
  42. # since the gnu compiler has several names force gcc
  43. IF(CMAKE_COMPILER_IS_GNUGCC)
  44. SET(CMAKE_BASE_NAME gcc)
  45. ENDIF(CMAKE_COMPILER_IS_GNUGCC)
  46. SET(CMAKE_SYSTEM_AND_C_COMPILER_INFO_FILE
  47. ${CMAKE_ROOT}/Modules/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}.cmake)
  48. INCLUDE(${CMAKE_SYSTEM_AND_C_COMPILER_INFO_FILE} OPTIONAL)
  49. ENDIF(CMAKE_C_COMPILER)
  50. IF(CMAKE_CXX_COMPILER)
  51. GET_FILENAME_COMPONENT(CMAKE_BASE_NAME ${CMAKE_CXX_COMPILER} NAME_WE)
  52. # since the gnu compiler has several names force gcc
  53. IF(CMAKE_COMPILER_IS_GNUGXX)
  54. SET(CMAKE_BASE_NAME g++)
  55. ENDIF(CMAKE_COMPILER_IS_GNUGXX)
  56. SET(CMAKE_SYSTEM_AND_CXX_COMPILER_INFO_FILE
  57. ${CMAKE_ROOT}/Modules/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}.cmake)
  58. INCLUDE(${CMAKE_SYSTEM_AND_CXX_COMPILER_INFO_FILE} OPTIONAL)
  59. ENDIF(CMAKE_CXX_COMPILER)
  60. # for most systems a module is the same as a shared library
  61. # so unless the variable CMAKE_MODULE_EXISTS is set just
  62. # copy the values from the LIBRARY variables
  63. IF(NOT CMAKE_MODULE_EXISTS)
  64. SET(CMAKE_SHARED_MODULE_C_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS)
  65. SET(CMAKE_SHARED_MODULE_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS})
  66. SET(CMAKE_SHARED_MODULE_CREATE_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_FLAGS})
  67. SET(CMAKE_SHARED_MODULE_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX})
  68. SET(CMAKE_SHARED_MODULE_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
  69. SET(CMAKE_SHARED_MODULE_LINK_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_FLAGS})
  70. SET(CMAKE_SHARED_MODULE_RUNTIME_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_FLAG})
  71. SET(CMAKE_SHARED_MODULE_RUNTIME_FLAG_SEP ${CMAKE_SHARED_MODULE_RUNTIME_FLAG_SEP})
  72. ENDIF(NOT CMAKE_MODULE_EXISTS)
  73. # include default rules that work for most unix like systems and compilers
  74. # this file will not set anything if it is already set
  75. INCLUDE(${CMAKE_ROOT}/Modules/CMakeDefaultMakeRuleVariables.cmake)
  76. IF(CMAKE_USER_MAKE_RULES_OVERRIDE)
  77. INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE})
  78. ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE)