- # Initialize ######################################################################################
-
- Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
- Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
- Include ( strip_symbols OPTIONAL RESULT_VARIABLE HAS_STRIP_SYMBOLS )
-
- Find_Package ( Sanitizers QUIET )
-
- Find_Package ( cppcore QUIET )
- If ( cppcore )
- Set ( CPPLOGGING_HAS_CPPCORE true )
- EndIf ( )
-
- Find_Package ( nlohmann_json QUIET )
- If ( nlohmann_json_FOUND )
- Set ( CPPLOGGING_HAS_NLOHMANN_JSON true )
- EndIf ( )
-
-
- # Object Library ##################################################################################
-
- Set ( CPPLOGGING_GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated/include )
- Configure_File ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/config.h.in
- ${CPPLOGGING_GENERATED_INCLUDE_DIR}/cpplogging/config.h )
-
- Set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
- Set ( CPPLOGGING_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
- File ( GLOB_RECURSE CPPLOGGING_HEADER_FILES ${CPPLOGGING_INCLUDE_DIR}/*.h )
- File ( GLOB_RECURSE CPPLOGGING_INLINE_FILES ${CPPLOGGING_INCLUDE_DIR}/*.inl )
- File ( GLOB_RECURSE CPPLOGGING_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
- Add_Library ( cpplogging-objects
- OBJECT
- ${CPPLOGGING_HEADER_FILES}
- ${CPPLOGGING_INLINE_FILES}
- ${CPPLOGGING_SOURCE_FILES} )
- If ( CPPLOGGING_HAS_CPPCORE )
- Target_Link_Libraries ( cpplogging-objects
- PRIVATE
- cppcore::cppcore )
- EndIf ( )
- If ( CPPLOGGING_HAS_NLOHMANN_JSON )
- Target_Link_Libraries ( cpplogging-objects
- PRIVATE
- nlohmann_json::nlohmann_json )
- EndIf ( )
- Target_Include_Directories ( cpplogging-objects
- PUBLIC
- $<BUILD_INTERFACE:${CPPLOGGING_INCLUDE_DIR}>
- $<BUILD_INTERFACE:${CPPLOGGING_GENERATED_INCLUDE_DIR}>
- $<INSTALL_INTERFACE:${CPPLOGGING_INSTALL_DIR_INCLUDE}> )
-
- # Static Library ##################################################################################
-
- Add_Library ( cpplogging-static STATIC $<TARGET_OBJECTS:cpplogging-objects> )
- Set_Target_Properties ( cpplogging-static
- PROPERTIES
- OUTPUT_NAME "${CPPLOGGING_OUTPUTNAME}"
- VERSION ${CPPLOGGING_VERSION} )
- Target_Include_Directories ( cpplogging-static
- PUBLIC
- $<BUILD_INTERFACE:${CPPLOGGING_INCLUDE_DIR}>
- $<BUILD_INTERFACE:${CPPLOGGING_GENERATED_INCLUDE_DIR}>
- $<INSTALL_INTERFACE:${CPPLOGGING_INSTALL_DIR_INCLUDE}> )
-
- # Shared Library ##################################################################################
-
- Add_Library ( cpplogging-shared SHARED $<TARGET_OBJECTS:cpplogging-objects> )
- Set_Target_Properties ( cpplogging-shared
- PROPERTIES
- OUTPUT_NAME "${CPPLOGGING_OUTPUTNAME}"
- VERSION ${CPPLOGGING_VERSION}
- SOVERSION ${CPPLOGGING_VERSION_SHORT} )
- Target_Include_Directories ( cpplogging-shared
- PUBLIC
- $<BUILD_INTERFACE:${CPPLOGGING_INCLUDE_DIR}>
- $<BUILD_INTERFACE:${CPPLOGGING_GENERATED_INCLUDE_DIR}>
- $<INSTALL_INTERFACE:${CPPLOGGING_INSTALL_DIR_INCLUDE}> )
-
- # Optimization ####################################################################################
-
- # sanitizers
- If ( Sanitizers_FOUND )
- Add_Sanitizers ( cpplogging-objects )
- EndIf ( )
-
- # pedantic
- If ( HAS_PEDANTIC )
- Pedantic_Apply_Flags_Target ( cpplogging-objects ALL )
- Pedantic_Apply_Flags_Target ( cpplogging-static ALL )
- Pedantic_Apply_Flags_Target ( cpplogging-shared ALL )
- EndIf ( )
-
- # cotire
- If ( HAS_COTIRE )
- Cotire ( cpplogging-objects )
- Cotire ( cpplogging-static )
- Cotire ( cpplogging-shared )
- EndIf ( )
-
- # Install #########################################################################################
-
- Set ( CPPLOGGING_HAS_EXPORT False PARENT_SCOPE )
-
- # Header
- If ( CPPLOGGING_INSTALL_HEADER )
- Install ( DIRECTORY ${CPPLOGGING_INCLUDE_DIR}/cpplogging
- DESTINATION ${CPPLOGGING_INSTALL_DIR_INCLUDE} )
- Install ( DIRECTORY ${CPPLOGGING_GENERATED_INCLUDE_DIR}/cpplogging
- DESTINATION ${CPPLOGGING_INSTALL_DIR_INCLUDE} )
- EndIf ( )
-
- # Static
- If ( CPPLOGGING_INSTALL_STATIC )
- Set ( CPPLOGGING_HAS_EXPORT True PARENT_SCOPE )
- Install ( TARGETS cpplogging-static
- EXPORT cpplogging
- DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} )
- EndIf ( )
-
- # Shared
- If ( CPPLOGGING_INSTALL_SHARED )
- Set ( CPPLOGGING_HAS_EXPORT True PARENT_SCOPE )
- Install ( TARGETS cpplogging-shared
- EXPORT cpplogging
- DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} )
- EndIf ( )
-
- # Debug
- If ( HAS_STRIP_SYMBOLS AND NOT CPPLOGGING_NO_STRIP )
- Strip_Symbols ( cpplogging-shared CPPLOGGING_DBG_FILE )
- If ( CPPLOGGING_INSTALL_DEBUG )
- Install ( FILES ${CPPLOGGING_DBG_FILE}
- DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} )
- EndIf ( )
- EndIf ( )
|