# 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 ) # Object Library ################################################################################## Set ( CMAKE_POSITION_INDEPENDENT_CODE ON ) Set ( CPPHIBERNATE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include ) 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 ) # 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 $ $ ) # 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 $ $ ) # 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 ( )