# 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 $ $ $ ) 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 $ ) Set_Target_Properties ( cpphibernate-static PROPERTIES OUTPUT_NAME "${CPPHIBERNATE_OUTPUTNAME}" VERSION ${CPPHIBERNATE_VERSION} ) Target_Include_Directories ( cpphibernate-static PUBLIC $ $ $ ) 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 $ ) Set_Target_Properties ( cpphibernate-shared PROPERTIES OUTPUT_NAME "${CPPHIBERNATE_OUTPUTNAME}" VERSION ${CPPHIBERNATE_VERSION} SOVERSION ${CPPHIBERNATE_VERSION_SHORT} ) Target_Include_Directories ( cpphibernate-shared PUBLIC $ $ $ ) 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 ( )