- # 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 ( Hana REQUIRED )
- Find_Package ( cppmp REQUIRED )
- Find_Package ( cppcore REQUIRED )
- Find_Package ( cppmariadb REQUIRED )
- If ( cppmariadb_FOUND )
- Set ( CPPHIBERNATE_HAS_CPPMARIADB true )
- EndIf ( )
- If ( CPPHIBERNATE_USE_CPPLOGGING )
- Find_Package ( cpplogging )
- If ( cpplogging_FOUND )
- Set ( CPPHIBERNATE_HAS_CPPLOGGING true )
- EndIf ( )
- EndIf ( )
-
- # Object Library ##################################################################################
-
- Set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
- Set ( CPPHIBERNATE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
- Set ( CPPHIBERNATE_GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated/include )
- Configure_File ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/config.h.in
- ${CPPHIBERNATE_GENERATED_INCLUDE_DIR}/cpphibernate/config.h )
- File ( GLOB_RECURSE CPPHIBERNATE_HEADER_FILES ${CPPHIBERNATE_INCLUDE_DIR}/*.h )
- File ( GLOB_RECURSE CPPHIBERNATE_INLINE_FILES ${CPPHIBERNATE_INCLUDE_DIR}/*.inl )
- File ( GLOB_RECURSE CPPHIBERNATE_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
- Add_Library ( cpphibernate-objects
- OBJECT
- ${CPPHIBERNATE_HEADER_FILES}
- ${CPPHIBERNATE_INLINE_FILES}
- ${CPPHIBERNATE_SOURCE_FILES} )
- Target_Include_Directories ( cpphibernate-objects
- PUBLIC
- $<BUILD_INTERFACE:${CPPHIBERNATE_INCLUDE_DIR}>
- $<BUILD_INTERFACE:${CPPHIBERNATE_GENERATED_INCLUDE_DIR}>
- $<INSTALL_INTERFACE:${CPPHIBERNATE_INSTALL_DIR_INCLUDE}> )
- Target_Link_Libraries ( cpphibernate-objects
- PUBLIC
- hana
- cppmp::cppmp
- cppcore::cppcore )
- If ( CPPHIBERNATE_HAS_CPPMARIADB )
- Target_Link_Libraries ( cpphibernate-objects
- PUBLIC
- cppmariadb::cppmariadb-shared )
- EndIf ( )
- If ( CPPHIBERNATE_HAS_CPPLOGGING )
- Target_Link_Libraries ( cpphibernate-objects
- PUBLIC
- cpplogging::cpplogging-shared )
- EndIf ( )
-
- # Static Library ##################################################################################
-
- Add_Library ( cpphibernate-static STATIC $<TARGET_OBJECTS:cpphibernate-objects> )
- Set_Target_Properties ( cpphibernate-static
- PROPERTIES
- OUTPUT_NAME "${CPPHIBERNATE_OUTPUTNAME}"
- VERSION ${CPPHIBERNATE_VERSION} )
- Target_Include_Directories ( cpphibernate-static
- PUBLIC
- $<BUILD_INTERFACE:${CPPHIBERNATE_INCLUDE_DIR}>
- $<BUILD_INTERFACE:${CPPHIBERNATE_GENERATED_INCLUDE_DIR}>
- $<INSTALL_INTERFACE:${CPPHIBERNATE_INSTALL_DIR_INCLUDE}> )
- If ( CPPHIBERNATE_HAS_CPPMARIADB )
- Target_Link_Libraries ( cpphibernate-static
- PUBLIC
- cppmariadb::cppmariadb-static )
- EndIf ( )
- If ( CPPHIBERNATE_HAS_CPPLOGGING )
- Target_Link_Libraries ( cpphibernate-objects
- PUBLIC
- cpplogging::cpplogging-static )
- EndIf ( )
-
- # Shared Library ##################################################################################
-
- Add_Library ( cpphibernate-shared SHARED $<TARGET_OBJECTS:cpphibernate-objects> )
- Set_Target_Properties ( cpphibernate-shared
- PROPERTIES
- OUTPUT_NAME "${CPPHIBERNATE_OUTPUTNAME}"
- VERSION ${CPPHIBERNATE_VERSION}
- SOVERSION ${CPPHIBERNATE_VERSION_SHORT} )
- Target_Include_Directories ( cpphibernate-shared
- PUBLIC
- $<BUILD_INTERFACE:${CPPHIBERNATE_INCLUDE_DIR}>
- $<BUILD_INTERFACE:${CPPHIBERNATE_GENERATED_INCLUDE_DIR}>
- $<INSTALL_INTERFACE:${CPPHIBERNATE_INSTALL_DIR_INCLUDE}> )
- If ( CPPHIBERNATE_HAS_CPPMARIADB )
- Target_Link_Libraries ( cpphibernate-shared
- PUBLIC
- cppmariadb::cppmariadb-shared )
- EndIf ( )
- If ( CPPHIBERNATE_HAS_CPPLOGGING )
- Target_Link_Libraries ( cpphibernate-objects
- PUBLIC
- cpplogging::cpplogging-shared )
- EndIf ( )
-
- # Optimization ####################################################################################
-
- # pedantic
- If ( HAS_PEDANTIC )
- Pedantic_Apply_Flags_Target ( cpphibernate-objects ALL )
- Pedantic_Apply_Flags_Target ( cpphibernate-static ALL )
- Pedantic_Apply_Flags_Target ( cpphibernate-shared ALL )
- EndIf ( )
-
- # cotire
- If ( HAS_COTIRE )
- Cotire ( cpphibernate-objects )
- Cotire ( cpphibernate-static )
- Cotire ( cpphibernate-shared )
- EndIf ( )
-
- # Install #########################################################################################
-
- # Header
- If ( CPPHIBERNATE_INSTALL_HEADER )
- Install ( FILES ${CPPHIBERNATE_INCLUDE_DIR}/cpphibernate.h
- DESTINATION ${CPPHIBERNATE_INSTALL_DIR_INCLUDE} )
- Install ( DIRECTORY ${CPPHIBERNATE_INCLUDE_DIR}/cpphibernate
- DESTINATION ${CPPHIBERNATE_INSTALL_DIR_INCLUDE} )
- EndIf ( )
-
- # Static
- If ( CPPHIBERNATE_INSTALL_STATIC )
- Install ( TARGETS cpphibernate-static
- EXPORT cpphibernate
- DESTINATION ${CPPHIBERNATE_INSTALL_DIR_LIB} )
- EndIf ( )
-
- # Shared
- If ( CPPHIBERNATE_INSTALL_SHARED )
- Install ( TARGETS cpphibernate-shared
- EXPORT cpphibernate
- DESTINATION ${CPPHIBERNATE_INSTALL_DIR_LIB} )
- EndIf ( )
-
- # Debug
- If ( HAS_STRIP_SYMBOLS AND NOT CPPHIBERNATE_NO_STRIP )
- Strip_Symbols ( cpphibernate-shared CPPHIBERNATE_DBG_FILE )
- If ( CPPHIBERNATE_INSTALL_DEBUG )
- Install ( FILES ${CPPHIBERNATE_DBG_FILE}
- DESTINATION ${CPPHIBERNATE_INSTALL_DIR_LIB} )
- EndIf ( )
- EndIf ( )
|