# 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 ( cppcore REQUIRED ) Find_Package ( libmicrohttpd REQUIRED ) If ( CPPMICROHTTPD_LOGGING MATCHES none ) Set ( CPPMICROHTTPD_LOGGING_NONE true ) ElseIf ( CPPMICROHTTPD_LOGGING MATCHES stdcout ) Set ( CPPMICROHTTPD_LOGGING_STDCOUT true ) ElseIf ( CPPMICROHTTPD_LOGGING MATCHES cpplogging ) Find_Package ( cpplogging QUIET ) If ( cpplogging_FOUND ) Set ( CPPMICROHTTPD_LOGGING_CPPLOGGING true ) Else ( ) Set ( CPPMICROHTTPD_LOGGING_STDCOUT true ) EndIf ( ) EndIf ( ) # Object Library ################################################################################## Set ( CMAKE_POSITION_INDEPENDENT_CODE ON ) Set ( CPPMICROHTTPD_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include ) Set ( CPPMICROHTTPD_GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated/include ) Configure_File ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/config.h.in ${CPPMICROHTTPD_GENERATED_INCLUDE_DIR}/cppmicrohttpd/config.h ) File ( GLOB_RECURSE CPPMICROHTTPD_HEADER_FILES ${CPPMICROHTTPD_INCLUDE_DIR}/*.h ) File ( GLOB_RECURSE CPPMICROHTTPD_INLINE_FILES ${CPPMICROHTTPD_INCLUDE_DIR}/*.inl ) File ( GLOB_RECURSE CPPMICROHTTPD_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) Add_Library ( cppmicrohttpd-objects OBJECT ${CPPMICROHTTPD_HEADER_FILES} ${CPPMICROHTTPD_INLINE_FILES} ${CPPMICROHTTPD_SOURCE_FILES} ) Target_Include_Directories ( cppmicrohttpd-objects PUBLIC $<BUILD_INTERFACE:${CPPMICROHTTPD_INCLUDE_DIR}> $<BUILD_INTERFACE:${CPPMICROHTTPD_GENERATED_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CPPMICROHTTPD_INSTALL_DIR_INCLUDE}> ) Target_Link_Libraries ( cppmicrohttpd-objects PUBLIC cppcore::cppcore ) If ( CPPMICROHTTPD_LOGGING_CPPLOGGING ) Target_Link_Libraries ( cppmicrohttpd-objects PUBLIC cpplogging::cpplogging-shared ) EndIf ( ) # Static Library ################################################################################## Add_Library ( cppmicrohttpd-static STATIC $<TARGET_OBJECTS:cppmicrohttpd-objects> ) Set_Target_Properties ( cppmicrohttpd-static PROPERTIES OUTPUT_NAME "${CPPMICROHTTPD_OUTPUTNAME}" VERSION ${CPPMICROHTTPD_VERSION} ) Target_Include_Directories ( cppmicrohttpd-static PUBLIC $<BUILD_INTERFACE:${CPPMICROHTTPD_INCLUDE_DIR}> $<BUILD_INTERFACE:${CPPMICROHTTPD_GENERATED_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CPPMICROHTTPD_INSTALL_DIR_INCLUDE}> ) Target_Link_Libraries ( cppmicrohttpd-static PUBLIC cppcore::cppcore libmicrohttpd::libmicrohttpd-static ) If ( CPPMICROHTTPD_LOGGING_CPPLOGGING ) Target_Link_Libraries ( cppmicrohttpd-static PUBLIC cpplogging::cpplogging-static ) EndIf ( ) # Shared Library ################################################################################## Add_Library ( cppmicrohttpd-shared SHARED $<TARGET_OBJECTS:cppmicrohttpd-objects> ) Set_Target_Properties ( cppmicrohttpd-shared PROPERTIES OUTPUT_NAME "${CPPMICROHTTPD_OUTPUTNAME}" VERSION ${CPPMICROHTTPD_VERSION} SOVERSION ${CPPMICROHTTPD_VERSION_SHORT} ) Target_Include_Directories ( cppmicrohttpd-shared PUBLIC $<BUILD_INTERFACE:${CPPMICROHTTPD_INCLUDE_DIR}> $<BUILD_INTERFACE:${CPPMICROHTTPD_GENERATED_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CPPMICROHTTPD_INSTALL_DIR_INCLUDE}> ) Target_Link_Libraries ( cppmicrohttpd-shared PUBLIC cppcore::cppcore libmicrohttpd::libmicrohttpd-shared ) If ( CPPMICROHTTPD_LOGGING_CPPLOGGING ) Target_Link_Libraries ( cppmicrohttpd-shared PUBLIC cpplogging::cpplogging-shared ) EndIf ( ) # Optimization #################################################################################### # pedantic If ( HAS_PEDANTIC ) Pedantic_Apply_Flags_Target ( cppmicrohttpd-objects ALL ) Pedantic_Apply_Flags_Target ( cppmicrohttpd-static ALL ) Pedantic_Apply_Flags_Target ( cppmicrohttpd-shared ALL ) EndIf ( ) # cotire If ( HAS_COTIRE ) Cotire ( cppmicrohttpd-objects ) Cotire ( cppmicrohttpd-static ) Cotire ( cppmicrohttpd-shared ) EndIf ( ) # Install ######################################################################################### Set ( CPPMICROHTTPD_HAS_EXPORT False PARENT_SCOPE ) # Header If ( CPPMICROHTTPD_INSTALL_HEADER ) Install ( FILES ${CPPMICROHTTPD_INCLUDE_DIR}/cppmicrohttpd.h DESTINATION ${CPPMICROHTTPD_INSTALL_DIR_INCLUDE} ) Install ( DIRECTORY ${CPPMICROHTTPD_INCLUDE_DIR}/cppmicrohttpd DESTINATION ${CPPMICROHTTPD_INSTALL_DIR_INCLUDE} ) Install ( DIRECTORY ${CPPMICROHTTPD_GENERATED_INCLUDE_DIR}/cppmicrohttpd DESTINATION ${CPPMICROHTTPD_INSTALL_DIR_INCLUDE} ) EndIf ( ) # Static If ( CPPMICROHTTPD_INSTALL_STATIC ) Set ( CPPMICROHTTPD_HAS_EXPORT True PARENT_SCOPE ) Install ( TARGETS cppmicrohttpd-static EXPORT cppmicrohttpd DESTINATION ${CPPMICROHTTPD_INSTALL_DIR_LIB} ) EndIf ( ) # Shared If ( CPPMICROHTTPD_INSTALL_SHARED ) Set ( CPPMICROHTTPD_HAS_EXPORT True PARENT_SCOPE ) Install ( TARGETS cppmicrohttpd-shared EXPORT cppmicrohttpd DESTINATION ${CPPMICROHTTPD_INSTALL_DIR_LIB} ) EndIf ( ) # Debug If ( HAS_STRIP_SYMBOLS AND NOT CPPMICROHTTPD_NO_STRIP ) Strip_Symbols ( cppmicrohttpd-shared CPPMICROHTTPD_DBG_FILE ) If ( CPPMICROHTTPD_INSTALL_DEBUG ) Install ( FILES ${CPPMICROHTTPD_DBG_FILE} DESTINATION ${CPPMICROHTTPD_INSTALL_DIR_LIB} ) EndIf ( ) EndIf ( )