You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

106 regels
5.4 KiB

  1. # Initialize ######################################################################################
  2. Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
  3. Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
  4. Include ( strip_symbols OPTIONAL RESULT_VARIABLE HAS_STRIP_SYMBOLS )
  5. Find_Package ( Hana REQUIRED )
  6. Find_Package ( cppmp REQUIRED )
  7. Find_Package ( cppcore REQUIRED )
  8. # Object Library ##################################################################################
  9. Set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
  10. Set ( CPPHIBERNATE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
  11. File ( GLOB_RECURSE CPPHIBERNATE_HEADER_FILES ${CPPHIBERNATE_INCLUDE_DIR}/*.h )
  12. File ( GLOB_RECURSE CPPHIBERNATE_INLINE_FILES ${CPPHIBERNATE_INCLUDE_DIR}/*.inl )
  13. File ( GLOB_RECURSE CPPHIBERNATE_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
  14. Add_Library ( cpphibernate-objects
  15. OBJECT
  16. ${CPPHIBERNATE_HEADER_FILES}
  17. ${CPPHIBERNATE_INLINE_FILES}
  18. ${CPPHIBERNATE_SOURCE_FILES} )
  19. Target_Include_Directories ( cpphibernate-objects
  20. PUBLIC
  21. $<BUILD_INTERFACE:${CPPHIBERNATE_INCLUDE_DIR}>
  22. $<INSTALL_INTERFACE:${CPPHIBERNATE_INSTALL_DIR_INCLUDE}> )
  23. Target_Link_Libraries ( cpphibernate-objects
  24. PUBLIC
  25. hana
  26. cppmp::cppmp
  27. cppcore::cppcore )
  28. # Static Library ##################################################################################
  29. Add_Library ( cpphibernate-static STATIC $<TARGET_OBJECTS:cpphibernate-objects> )
  30. Set_Target_Properties ( cpphibernate-static
  31. PROPERTIES
  32. OUTPUT_NAME "${CPPHIBERNATE_OUTPUTNAME}"
  33. VERSION ${CPPHIBERNATE_VERSION} )
  34. Target_Include_Directories ( cpphibernate-static
  35. PUBLIC
  36. $<BUILD_INTERFACE:${CPPHIBERNATE_INCLUDE_DIR}>
  37. $<INSTALL_INTERFACE:${CPPHIBERNATE_INSTALL_DIR_INCLUDE}> )
  38. # Shared Library ##################################################################################
  39. Add_Library ( cpphibernate-shared SHARED $<TARGET_OBJECTS:cpphibernate-objects> )
  40. Set_Target_Properties ( cpphibernate-shared
  41. PROPERTIES
  42. OUTPUT_NAME "${CPPHIBERNATE_OUTPUTNAME}"
  43. VERSION ${CPPHIBERNATE_VERSION}
  44. SOVERSION ${CPPHIBERNATE_VERSION_SHORT} )
  45. Target_Include_Directories ( cpphibernate-shared
  46. PUBLIC
  47. $<BUILD_INTERFACE:${CPPHIBERNATE_INCLUDE_DIR}>
  48. $<INSTALL_INTERFACE:${CPPHIBERNATE_INSTALL_DIR_INCLUDE}> )
  49. # Optimization ####################################################################################
  50. # pedantic
  51. If ( HAS_PEDANTIC )
  52. Pedantic_Apply_Flags_Target ( cpphibernate-objects ALL )
  53. Pedantic_Apply_Flags_Target ( cpphibernate-static ALL )
  54. Pedantic_Apply_Flags_Target ( cpphibernate-shared ALL )
  55. EndIf ( )
  56. # cotire
  57. If ( HAS_COTIRE )
  58. Cotire ( cpphibernate-objects )
  59. Cotire ( cpphibernate-static )
  60. Cotire ( cpphibernate-shared )
  61. EndIf ( )
  62. # Install #########################################################################################
  63. # Header
  64. If ( CPPHIBERNATE_INSTALL_HEADER )
  65. Install ( FILES ${CPPHIBERNATE_INCLUDE_DIR}/cpphibernate.h
  66. DESTINATION ${CPPHIBERNATE_INSTALL_DIR_INCLUDE} )
  67. Install ( DIRECTORY ${CPPHIBERNATE_INCLUDE_DIR}/cpphibernate
  68. DESTINATION ${CPPHIBERNATE_INSTALL_DIR_INCLUDE} )
  69. EndIf ( )
  70. # Static
  71. If ( CPPHIBERNATE_INSTALL_STATIC )
  72. Install ( TARGETS cpphibernate-static
  73. EXPORT cpphibernate
  74. DESTINATION ${CPPHIBERNATE_INSTALL_DIR_LIB} )
  75. EndIf ( )
  76. # Shared
  77. If ( CPPHIBERNATE_INSTALL_SHARED )
  78. Install ( TARGETS cpphibernate-shared
  79. EXPORT cpphibernate
  80. DESTINATION ${CPPHIBERNATE_INSTALL_DIR_LIB} )
  81. EndIf ( )
  82. # Debug
  83. If ( HAS_STRIP_SYMBOLS AND NOT CPPHIBERNATE_NO_STRIP )
  84. Strip_Symbols ( cpphibernate-shared CPPHIBERNATE_DBG_FILE )
  85. If ( CPPHIBERNATE_INSTALL_DEBUG )
  86. Install ( FILES ${CPPHIBERNATE_DBG_FILE}
  87. DESTINATION ${CPPHIBERNATE_INSTALL_DIR_LIB} )
  88. EndIf ( )
  89. EndIf ( )