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.

117 lines
6.1 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 ( nlohmann_json QUIET )
  6. If ( nlohmann_json_FOUND )
  7. Set ( CPPLOGGING_HAS_NLOHMANN_JSON true )
  8. EndIf ( )
  9. # Object Library ##################################################################################
  10. Set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
  11. Set ( CPPLOGGING_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
  12. Set ( CPPLOGGING_GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated/include )
  13. Configure_File ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/config.h.in
  14. ${CPPLOGGING_GENERATED_INCLUDE_DIR}/cpplogging/config.h )
  15. File ( GLOB_RECURSE CPPLOGGING_HEADER_FILES ${CPPLOGGING_INCLUDE_DIR}/*.h )
  16. File ( GLOB_RECURSE CPPLOGGING_INLINE_FILES ${CPPLOGGING_INCLUDE_DIR}/*.inl )
  17. File ( GLOB_RECURSE CPPLOGGING_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
  18. Add_Library ( cpplogging-objects
  19. OBJECT
  20. ${CPPLOGGING_HEADER_FILES}
  21. ${CPPLOGGING_INLINE_FILES}
  22. ${CPPLOGGING_SOURCE_FILES} )
  23. If ( CPPLOGGING_HAS_NLOHMANN_JSON )
  24. Target_Link_Libraries ( cpplogging-objects
  25. PRIVATE
  26. nlohmann_json::nlohmann_json )
  27. EndIf ( )
  28. Target_Include_Directories ( cpplogging-objects
  29. PUBLIC
  30. $<BUILD_INTERFACE:${CPPLOGGING_INCLUDE_DIR}>
  31. $<BUILD_INTERFACE:${CPPLOGGING_GENERATED_INCLUDE_DIR}>
  32. $<INSTALL_INTERFACE:${CPPLOGGING_INSTALL_DIR_INCLUDE}> )
  33. # Static Library ##################################################################################
  34. Add_Library ( cpplogging-static STATIC $<TARGET_OBJECTS:cpplogging-objects> )
  35. Set_Target_Properties ( cpplogging-static
  36. PROPERTIES
  37. OUTPUT_NAME "${CPPLOGGING_OUTPUTNAME}"
  38. VERSION ${CPPLOGGING_VERSION} )
  39. Target_Include_Directories ( cpplogging-static
  40. PUBLIC
  41. $<BUILD_INTERFACE:${CPPLOGGING_INCLUDE_DIR}>
  42. $<BUILD_INTERFACE:${CPPLOGGING_GENERATED_INCLUDE_DIR}>
  43. $<INSTALL_INTERFACE:${CPPLOGGING_INSTALL_DIR_INCLUDE}> )
  44. # Shared Library ##################################################################################
  45. Add_Library ( cpplogging-shared SHARED $<TARGET_OBJECTS:cpplogging-objects> )
  46. Set_Target_Properties ( cpplogging-shared
  47. PROPERTIES
  48. OUTPUT_NAME "${CPPLOGGING_OUTPUTNAME}"
  49. VERSION ${CPPLOGGING_VERSION}
  50. SOVERSION ${CPPLOGGING_VERSION_SHORT} )
  51. Target_Include_Directories ( cpplogging-shared
  52. PUBLIC
  53. $<BUILD_INTERFACE:${CPPLOGGING_INCLUDE_DIR}>
  54. $<BUILD_INTERFACE:${CPPLOGGING_GENERATED_INCLUDE_DIR}>
  55. $<INSTALL_INTERFACE:${CPPLOGGING_INSTALL_DIR_INCLUDE}> )
  56. # Optimization ####################################################################################
  57. # pedantic
  58. If ( HAS_PEDANTIC )
  59. Pedantic_Apply_Flags_Target ( cpplogging-objects ALL )
  60. Pedantic_Apply_Flags_Target ( cpplogging-static ALL )
  61. Pedantic_Apply_Flags_Target ( cpplogging-shared ALL )
  62. EndIf ( )
  63. # cotire
  64. If ( HAS_COTIRE )
  65. Cotire ( cpplogging-objects )
  66. Cotire ( cpplogging-static )
  67. Cotire ( cpplogging-shared )
  68. EndIf ( )
  69. # Install #########################################################################################
  70. Set ( CPPLOGGING_HAS_EXPORT False PARENT_SCOPE )
  71. # Header
  72. If ( CPPLOGGING_INSTALL_HEADER )
  73. Install ( DIRECTORY ${CPPLOGGING_INCLUDE_DIR}/cpplogging
  74. DESTINATION ${CPPLOGGING_INSTALL_DIR_INCLUDE} )
  75. Install ( DIRECTORY ${CPPLOGGING_GENERATED_INCLUDE_DIR}/cpplogging
  76. DESTINATION ${CPPLOGGING_INSTALL_DIR_INCLUDE} )
  77. EndIf ( )
  78. # Static
  79. If ( CPPLOGGING_INSTALL_STATIC )
  80. Set ( CPPLOGGING_HAS_EXPORT True PARENT_SCOPE )
  81. Install ( TARGETS cpplogging-static
  82. EXPORT cpplogging
  83. DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} )
  84. EndIf ( )
  85. # Shared
  86. If ( CPPLOGGING_INSTALL_SHARED )
  87. Set ( CPPLOGGING_HAS_EXPORT True PARENT_SCOPE )
  88. Install ( TARGETS cpplogging-shared
  89. EXPORT cpplogging
  90. DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} )
  91. EndIf ( )
  92. # Debug
  93. If ( HAS_STRIP_SYMBOLS AND NOT CPPLOGGING_NO_STRIP )
  94. Strip_Symbols ( cpplogging-shared CPPLOGGING_DBG_FILE )
  95. If ( CPPLOGGING_INSTALL_DEBUG )
  96. Install ( FILES ${CPPLOGGING_DBG_FILE}
  97. DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} )
  98. EndIf ( )
  99. EndIf ( )