Browse Source

* Updated project structure

master
bergmann 4 years ago
parent
commit
c1e9a8fa81
9 changed files with 316 additions and 291 deletions
  1. +1
    -1
      .gitmodules
  2. +49
    -49
      CMakeLists.txt
  3. +3
    -0
      README.md
  4. +17
    -17
      cmake/cppmicrohttpd-const.cmake
  5. +27
    -27
      cmake/cppmicrohttpd-options.cmake
  6. +27
    -21
      cmake/cppmicrohttpd-var.cmake
  7. +1
    -1
      cmake/modules
  8. +131
    -122
      src/CMakeLists.txt
  9. +60
    -53
      test/CMakeLists.txt

+ 1
- 1
.gitmodules View File

@@ -1,3 +1,3 @@
[submodule "cmake/modules"]
path = cmake/modules
url = b3rgmann@git.bergmann89.de:cpp/CmakeModules.git
url = b3rgmann@git.bergmann89.de:cpp/CMakeModules.git

+ 49
- 49
CMakeLists.txt View File

@@ -1,63 +1,63 @@
# Initialize CMake ################################################################################

CMake_Minimum_Required ( VERSION 3.12.0 FATAL_ERROR )
CMake_Minimum_Required ( VERSION 3.12.0 FATAL_ERROR )

# Set CMAKE_BUILD_TYPE
If ( NOT CMAKE_BUILD_TYPE )
Set ( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build!" FORCE )
EndIf ( NOT CMAKE_BUILD_TYPE )
Set_Property ( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel )
If ( NOT CMAKE_BUILD_TYPE )
Set ( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build!" FORCE )
EndIf ( NOT CMAKE_BUILD_TYPE )
Set_Property ( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel )

# Set CMAKE_MODULE_PATH
If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
EndIf ( )
If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" )
EndIf ( )
If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
EndIf ( )
If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/cmake" )
Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/cmake" )
EndIf ( )

# Project #########################################################################################

Include ( CTest )
Include ( GNUInstallDirs )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppmicrohttpd-options.cmake )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppmicrohttpd-const.cmake )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppmicrohttpd-var.cmake )
Project ( ${CPPMICROHTTPD_PROJECT_NAME}
DESCRIPTION "${CPPMICROHTTPD_PROJECT_DESCRIPTION}"
VERSION "${CPPMICROHTTPD_VERSION}" )
Include ( GNUInstallDirs )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppmicrohttpd-options.cmake )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppmicrohttpd-const.cmake )
Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppmicrohttpd-var.cmake )
Project ( ${CPPMICROHTTPD_PROJECT_NAME}
DESCRIPTION "${CPPMICROHTTPD_PROJECT_DESCRIPTION}"
VERSION "${CPPMICROHTTPD_VERSION}" )
Include ( CTest )

# Subdirectories
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/src )
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/test )
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/src )
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/test )

# Install
If ( NOT CPPMICROHTTPD_HAS_EXPORT
OR NOT CPPMICROHTTPD_INSTALL_PACKAGE )
Return ( )
EndIf ( )

Include ( CMakePackageConfigHelpers )
Write_Basic_Package_Version_File ( "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmicrohttpd-config-version.cmake"
VERSION ${CPPMICROHTTPD_VERSION}
COMPATIBILITY AnyNewerVersion )
Configure_File ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppmicrohttpd-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmicrohttpd-config.cmake"
@ONLY )

Set ( ConfigPackageLocation "${CPPMICROHTTPD_INSTALL_DIR_SHARE}/cmake" )
Install ( EXPORT
cppmicrohttpd
NAMESPACE
cppmicrohttpd::
DESTINATION
${ConfigPackageLocation} )
Install ( FILES
If ( NOT CPPMICROHTTPD_HAS_EXPORT
OR NOT CPPMICROHTTPD_INSTALL_PACKAGE )
Return ( )
EndIf ( )

Include ( CMakePackageConfigHelpers )
Write_Basic_Package_Version_File ( "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmicrohttpd-config-version.cmake"
VERSION ${CPPMICROHTTPD_VERSION}
COMPATIBILITY AnyNewerVersion )
Configure_File ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppmicrohttpd-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmicrohttpd-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmicrohttpd-config-version.cmake"
DESTINATION
${ConfigPackageLocation}
COMPONENT
Devel )
@ONLY )

Set ( ConfigPackageLocation "${CPPMICROHTTPD_INSTALL_DIR_SHARE}/cmake" )
Install ( EXPORT
cppmicrohttpd
NAMESPACE
cppmicrohttpd::
DESTINATION
${ConfigPackageLocation} )
Install ( FILES
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmicrohttpd-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmicrohttpd-config-version.cmake"
DESTINATION
${ConfigPackageLocation}
COMPONENT
Devel )

+ 3
- 0
README.md View File

@@ -0,0 +1,3 @@
# cppmicrohttpd

C++ warpper library for libmicrohttpd.

+ 17
- 17
cmake/cppmicrohttpd-const.cmake View File

@@ -1,28 +1,28 @@
# This file contains constant variables that are fixed to this project

# Version
Set ( CPPMICROHTTPD_VERSION_MAJOR 1 )
Set ( CPPMICROHTTPD_VERSION_MINOR 0 )
Set ( CPPMICROHTTPD_VERSION_PATCH 0 )
Set ( CPPMICROHTTPD_VERSION_BUILD 0 )
Set ( CPPMICROHTTPD_VERSION_HASH "" )
Set ( CPPMICROHTTPD_VERSION_BEHIND 0 )
Set ( CPPMICROHTTPD_VERSION_DIRTY 0 )
Set ( CPPMICROHTTPD_VERSION_MAJOR 1 )
Set ( CPPMICROHTTPD_VERSION_MINOR 0 )
Set ( CPPMICROHTTPD_VERSION_PATCH 0 )
Set ( CPPMICROHTTPD_VERSION_BUILD 0 )
Set ( CPPMICROHTTPD_VERSION_HASH "" )
Set ( CPPMICROHTTPD_VERSION_BEHIND 0 )
Set ( CPPMICROHTTPD_VERSION_DIRTY 0 )

# Names
Set ( CPPMICROHTTPD_PROJECT_NAME "cppmicrohttpd" )
Set ( CPPMICROHTTPD_PROJECT_DESCRIPTION "A simple hello world library" )
Set ( CPPMICROHTTPD_PROJECT_NAME "cppmicrohttpd" )
Set ( CPPMICROHTTPD_PROJECT_DESCRIPTION "C++ wrapper library for libmicrohttpd" )

# Include generated variables for further usage
Include ( ${CMAKE_CURRENT_LIST_DIR}/cppmicrohttpd-var.cmake )
Include ( ${CMAKE_CURRENT_LIST_DIR}/cppmicrohttpd-var.cmake )

# Install directories
Set ( CPPMICROHTTPD_INSTALL_DIR_INCLUDE "${CMAKE_INSTALL_INCLUDEDIR}/${CPPMICROHTTPD_NAME}" )
Set ( CPPMICROHTTPD_INSTALL_DIR_LIB "${CMAKE_INSTALL_LIBDIR}" )
Set ( CPPMICROHTTPD_INSTALL_DIR_SHARE "${CMAKE_INSTALL_DATAROOTDIR}/${CPPMICROHTTPD_NAME}" )
Set ( CPPMICROHTTPD_INSTALL_DIR_INCLUDE "${CMAKE_INSTALL_INCLUDEDIR}/${CPPMICROHTTPD_NAME}" )
Set ( CPPMICROHTTPD_INSTALL_DIR_LIB "${CMAKE_INSTALL_LIBDIR}" )
Set ( CPPMICROHTTPD_INSTALL_DIR_SHARE "${CMAKE_INSTALL_DATAROOTDIR}/${CPPMICROHTTPD_NAME}" )

# C Standard
Set ( CMAKE_C_STANDARD 11 )
Set ( CMAKE_CXX_STANDARD 17 )
Set ( CMAKE_C_STANDARD_REQUIRED ON )
Set ( CMAKE_CXX_STANDARD_REQUIRED ON )
Set ( CMAKE_C_STANDARD 11 )
Set ( CMAKE_CXX_STANDARD 17 )
Set ( CMAKE_C_STANDARD_REQUIRED ON )
Set ( CMAKE_CXX_STANDARD_REQUIRED ON )

+ 27
- 27
cmake/cppmicrohttpd-options.cmake View File

@@ -1,29 +1,29 @@
# This file contains options that can be passed to the cmake command

Option ( CPPMICROHTTPD_INSTALL_HEADER
"Install headers of cppmicrohttpd."
ON )
Option ( CPPMICROHTTPD_INSTALL_STATIC
"Install static library of cppmicrohttpd."
ON )
Option ( CPPMICROHTTPD_INSTALL_SHARED
"Install shared library of cppmicrohttpd."
ON )
Option ( CPPMICROHTTPD_INSTALL_DEBUG
"Install the stripped debug informations of cppmicrohttpd."
OFF )
Option ( CPPMICROHTTPD_INSTALL_PACKAGE
"Install the cmake package of cppmicrohttpd."
ON )
Option ( CPPMICROHTTPD_NO_STRIP
"Do not strip debug symbols from binary."
OFF )
Option ( CPPMICROHTTPD_USE_GIT_VERSION
"Read the git tags to get the version of cppmicrohttpd"
ON )
If ( NOT CPPMICROHTTPD_LOGGING )
Set ( CPPMICROHTTPD_LOGGING none
CACHE STRING "Specify how cppmicrohttpd should write log entries." )
Set_Property ( CACHE CPPMICROHTTPD_LOGGING
PROPERTY STRINGS none stdout cpplogging )
EndIf ( )
Option ( CPPMICROHTTPD_INSTALL_HEADER
"Install headers of cppmicrohttpd."
ON )
Option ( CPPMICROHTTPD_INSTALL_STATIC
"Install static library of cppmicrohttpd."
ON )
Option ( CPPMICROHTTPD_INSTALL_SHARED
"Install shared library of cppmicrohttpd."
ON )
Option ( CPPMICROHTTPD_INSTALL_DEBUG
"Install the stripped debug informations of cppmicrohttpd."
OFF )
Option ( CPPMICROHTTPD_INSTALL_PACKAGE
"Install the cmake package of cppmicrohttpd."
ON )
Option ( CPPMICROHTTPD_NO_STRIP
"Do not strip debug symbols from binary."
OFF )
Option ( CPPMICROHTTPD_USE_GIT_VERSION
"Read the git tags to get the version of cppmicrohttpd"
ON )
If ( NOT CPPMICROHTTPD_LOGGING )
Set ( CPPMICROHTTPD_LOGGING none
CACHE STRING "Specify how cppmicrohttpd should write log entries." )
Set_Property ( CACHE CPPMICROHTTPD_LOGGING
PROPERTY STRINGS none stdout cpplogging )
EndIf ( )

+ 27
- 21
cmake/cppmicrohttpd-var.cmake View File

@@ -1,26 +1,32 @@
# This file contains generated variables that are needed for the project

# Git Version
If ( CPPMICROHTTPD_USE_GIT_VERSION )
Include ( git_helper OPTIONAL RESULT_VARIABLE HAS_GIT_HELPER )
If ( HAS_GIT_HELPER )
GitGetVersion ( ${CMAKE_CURRENT_LIST_DIR}/..
CPPMICROHTTPD_VERSION_MAJOR
CPPMICROHTTPD_VERSION_MINOR
CPPMICROHTTPD_VERSION_PATCH
CPPMICROHTTPD_VERSION_BUILD
CPPMICROHTTPD_VERSION_HASH
CPPMICROHTTPD_VERSION_BEHIND
CPPMICROHTTPD_VERSION_DIRTY )
EndIf ( )
EndIf ( )
If ( CPPMICROHTTPD_USE_GIT_VERSION )
Include ( git_helper OPTIONAL RESULT_VARIABLE HAS_GIT_HELPER )
If ( HAS_GIT_HELPER )
GitGetVersion ( ${CMAKE_CURRENT_LIST_DIR}/..
CPPMICROHTTPD_VERSION_MAJOR
CPPMICROHTTPD_VERSION_MINOR
CPPMICROHTTPD_VERSION_PATCH
CPPMICROHTTPD_VERSION_BUILD
CPPMICROHTTPD_VERSION_HASH
CPPMICROHTTPD_VERSION_BEHIND
CPPMICROHTTPD_VERSION_DIRTY )
EndIf ( )
EndIf ( )

# Strings
Set ( CPPMICROHTTPD_VERSION_SHORT "${CPPMICROHTTPD_VERSION_MAJOR}.${CPPMICROHTTPD_VERSION_MINOR}" )
Set ( CPPMICROHTTPD_VERSION "${CPPMICROHTTPD_VERSION_SHORT}.${CPPMICROHTTPD_VERSION_PATCH}.${CPPMICROHTTPD_VERSION_BUILD}" )
Set ( CPPMICROHTTPD_VERSION_COMPLETE "${CPPMICROHTTPD_VERSION}" )
Set ( CPPMICROHTTPD_NAME "${CPPMICROHTTPD_PROJECT_NAME}-${CPPMICROHTTPD_VERSION_SHORT}" )
Set ( CPPMICROHTTPD_OUTPUTNAME "${CPPMICROHTTPD_PROJECT_NAME}" )
If ( CPPMICROHTTPD_VERSION_BEHIND )
Set ( CPPMICROHTTPD_VERSION_COMPLETE "${CPPMICROHTTPD_VERSION_COMPLETE}+${CPPMICROHTTPD_VERSION_BEHIND}" )
EndIf ( )
Set ( CPPMICROHTTPD_VERSION_SHORT
"${CPPMICROHTTPD_VERSION_MAJOR}.${CPPMICROHTTPD_VERSION_MINOR}" )
Set ( CPPMICROHTTPD_VERSION
"${CPPMICROHTTPD_VERSION_SHORT}.${CPPMICROHTTPD_VERSION_PATCH}.${CPPMICROHTTPD_VERSION_BUILD}" )
Set ( CPPMICROHTTPD_VERSION_COMPLETE
"${CPPMICROHTTPD_VERSION}" )
Set ( CPPMICROHTTPD_NAME
"${CPPMICROHTTPD_PROJECT_NAME}-${CPPMICROHTTPD_VERSION_SHORT}" )
Set ( CPPMICROHTTPD_OUTPUTNAME
"${CPPMICROHTTPD_PROJECT_NAME}" )
If ( CPPMICROHTTPD_VERSION_BEHIND )
Set ( CPPMICROHTTPD_VERSION_COMPLETE
"${CPPMICROHTTPD_VERSION_COMPLETE}+${CPPMICROHTTPD_VERSION_BEHIND}" )
EndIf ( )

+ 1
- 1
cmake/modules

@@ -1 +1 @@
Subproject commit ebbae4fbb42d671331b4c6e9d1d142f41dcacc1b
Subproject commit 94b9877d65e46c9d8169ebc46f163d02e4d9dcf3

+ 131
- 122
src/CMakeLists.txt View File

@@ -1,150 +1,159 @@
# 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 ( )
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 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 ( )
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 )

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

# sanitizers
If ( Sanitizers_FOUND )
Add_Sanitizers ( cppmicrohttpd-objects )
EndIf ( )

# 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 ( )
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 ( )
If ( HAS_COTIRE )
Cotire ( cppmicrohttpd-objects )
Cotire ( cppmicrohttpd-static )
Cotire ( cppmicrohttpd-shared )
EndIf ( )

# Install #########################################################################################

Set ( CPPMICROHTTPD_HAS_EXPORT False PARENT_SCOPE )
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 ( )
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 ( )
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 ( )
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 ( )
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 ( )

+ 60
- 53
test/CMakeLists.txt View File

@@ -1,68 +1,75 @@
# Initialize ######################################################################################

Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
Include ( cmake_tests OPTIONAL RESULT_VARIABLE HAS_CMAKE_TESTS )
Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
Include ( cmake_tests OPTIONAL RESULT_VARIABLE HAS_CMAKE_TESTS )

Find_Package ( GTest )
If ( NOT "${GTest_FOUND}" )
Return ( )
EndIf ( )
Find_Package ( Sanitizers QUIET )

Find_Package ( GTest )
If ( NOT "${GTest_FOUND}" )
Return ( )
EndIf ( )

# Test Helper #####################################################################################

File ( GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/helper/*.cpp )
Add_Library ( cppmicrohttpd-test-helper STATIC ${SOURCE_FILES} )
Target_Include_Directories ( cppmicrohttpd-test-helper
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/helper>
$<INSTALL_INTERFACE:${CPPMICROHTTPD_INSTALL_DIR_INCLUDE}> )
Target_Include_Directories ( cppmicrohttpd-test-helper
SYSTEM PUBLIC
${MICROHTTPD_INCLUDE_DIRS} )
Target_Link_Libraries ( cppmicrohttpd-test-helper
PUBLIC
cppmicrohttpd-objects
GMock::GMock )
File ( GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/helper/*.cpp )
Add_Library ( cppmicrohttpd-test-helper STATIC ${SOURCE_FILES} )
Target_Include_Directories ( cppmicrohttpd-test-helper
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/helper>
$<INSTALL_INTERFACE:${CPPMICROHTTPD_INSTALL_DIR_INCLUDE}> )
Target_Include_Directories ( cppmicrohttpd-test-helper
SYSTEM PUBLIC
${MICROHTTPD_INCLUDE_DIRS} )
Target_Link_Libraries ( cppmicrohttpd-test-helper
PUBLIC
cppmicrohttpd-objects
GMock::GMock )

# Test ############################################################################################

File ( GLOB_RECURSE CPPMICROHTTPD_TEST_HEADER_FILES
${CMAKE_CURRENT_SOURCE_DIR}/*.h )
File ( GLOB_RECURSE CPPMICROHTTPD_TEST_INLINE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
File ( GLOB_RECURSE CPPMICROHTTPD_TEST_SOURCE_FILES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/cppmicrohttpd/*.cpp )
File ( GLOB_RECURSE CPPMICROHTTPD_TEST_HEADER_FILES
${CMAKE_CURRENT_SOURCE_DIR}/*.h )
File ( GLOB_RECURSE CPPMICROHTTPD_TEST_INLINE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
File ( GLOB_RECURSE CPPMICROHTTPD_TEST_SOURCE_FILES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )

ForEach ( FILE IN LISTS CPPMICROHTTPD_TEST_SOURCE_FILES )
ForEach ( FILE IN LISTS CPPMICROHTTPD_TEST_SOURCE_FILES )
# add test
Get_Filename_Component ( TEST_DIR ${FILE} DIRECTORY )
Get_Filename_Component ( TEST_NAME ${FILE} NAME_WE )
Set ( TEST_NAME "${TEST_DIR}/${TEST_NAME}" )
String ( REPLACE "\\" "-" TEST_NAME "${TEST_NAME}" )
String ( REPLACE "/" "-" TEST_NAME "${TEST_NAME}" )
String ( REPLACE "_" "-" TEST_NAME "${TEST_NAME}" )
Set ( TEST_NAME "test-${TEST_NAME}" )
Add_Executable ( ${TEST_NAME}
EXCLUDE_FROM_ALL
${CPPMICROHTTPD_TEST_HEADER_FILES}
${CPPMICROHTTPD_TEST_INLINE_FILES}
${FILE} )
Target_Link_Libraries ( ${TEST_NAME}
PUBLIC
cppmicrohttpd-test-helper
GMock::Main )
Get_Filename_Component ( TEST_DIR ${FILE} DIRECTORY )
Get_Filename_Component ( TEST_NAME ${FILE} NAME_WE )
Set ( TEST_NAME "${TEST_DIR}/${TEST_NAME}" )
String ( REPLACE "\\" "-" TEST_NAME "${TEST_NAME}" )
String ( REPLACE "/" "-" TEST_NAME "${TEST_NAME}" )
String ( REPLACE "_" "-" TEST_NAME "${TEST_NAME}" )
Set ( TEST_NAME "test-${TEST_NAME}" )
Add_Executable ( ${TEST_NAME}
EXCLUDE_FROM_ALL
${CPPMICROHTTPD_TEST_HEADER_FILES}
${CPPMICROHTTPD_TEST_INLINE_FILES}
${FILE} )
Target_Link_Libraries ( ${TEST_NAME}
PUBLIC
cppmicrohttpd-test-helper
GMock::Main )

# Sanitizers
If ( Sanitizers_FOUND )
Add_Sanitizers ( ${TEST_NAME} )
EndIf ( )

# pedantic
If ( HAS_PEDANTIC )
Pedantic_Apply_Flags_Target ( ${TEST_NAME} ALL )
EndIf ( )
If ( HAS_PEDANTIC )
Pedantic_Apply_Flags_Target ( ${TEST_NAME} ALL )
EndIf ( )

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} GROUP cppmicrohttpd )
Else ( )
Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
EndIf ( )
EndForEach ( )
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} GROUP cppmicrohttpd )
Else ( )
Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
EndIf ( )
EndForEach ( )

Loading…
Cancel
Save