From 0643151cf9ee8e09f4a613256bada8cde24b75c4 Mon Sep 17 00:00:00 2001 From: Alexander Dahl Date: Thu, 12 Dec 2013 17:30:23 +0100 Subject: [PATCH] cmake: introduce cmake as alternative build system see #27 Signed-off-by: Alexander Dahl --- .gitignore | 1 + CMakeLists.txt | 46 +++++++++++++++++++++++++++++++++++++++ cgi-config.cmake.in | 14 ++++++++++++ src/CMakeLists.txt | 50 +++++++++++++++++++++++++++++++++++++++++++ src/config.h.cmake.in | 1 + 5 files changed, 112 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 cgi-config.cmake.in create mode 100644 src/CMakeLists.txt create mode 100644 src/config.h.cmake.in diff --git a/.gitignore b/.gitignore index d60c22d..f48c7c1 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ libcgi.so autom4te.cache configure src/config.h +*swp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..f07e26d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,46 @@ +# +# Copyright 2013,2016 Alexander Dahl +# +cmake_minimum_required(VERSION 2.8.8) + +project(cgi) +string(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC) +string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LC) +set(LIBPREFIX ${PROJECT_NAME}) +set(LIBPREFIX_LC ${PROJECT_NAME_LC}) +set(LIBPREFIX_UC ${PROJECT_NAME_UC}) + +set(PACKAGE_MAJOR_VERSION "1") +set(PACKAGE_MINOR_VERSION "0") +set(PACKAGE_BUILD_VERSION "0") +set(PACKAGE_VERSION "${PACKAGE_MAJOR_VERSION}.${PACKAGE_MINOR_VERSION}.${PACKAGE_BUILD_VERSION}") + +# includes +include(CMakePackageConfigHelpers) # cmake 2.8.8 +include(FeatureSummary) +include(GNUInstallDirs) # cmake 2.8.5 + +# subdirectories +add_subdirectory("src") + +# cmake package stuff +configure_package_config_file(${PROJECT_NAME_LC}-config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME_LC}-config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" + PATH_VARS CMAKE_INSTALL_INCLUDEDIR + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME_LC}-config-version.cmake" + VERSION ${PACKAGE_VERSION} + COMPATIBILITY AnyNewerVersion +) +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME_LC}-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME_LC}-config-version.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" +) + +# feature summary +message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") +feature_summary(WHAT ALL) diff --git a/cgi-config.cmake.in b/cgi-config.cmake.in new file mode 100644 index 0000000..165aded --- /dev/null +++ b/cgi-config.cmake.in @@ -0,0 +1,14 @@ +# +# Copyright 2013 Alexander Dahl +# + +# paths +@PACKAGE_INIT@ +set_and_check(CGI_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@/@PROJECT_NAME@") + +# targets +get_filename_component(_dir "${CMAKE_CURRENT_LIST_FILE}" PATH) +if(NOT TARGET @PROJECT_NAME@-shared) + include("${_dir}/@PROJECT_NAME@-targets.cmake") +endif(NOT TARGET @PROJECT_NAME@-shared) +set(CGI_LIBRARIES @PROJECT_NAME@-shared) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..39e0b7e --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,50 @@ +# +# Copyright 2013,2016 Alexander Dahl +# +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/config.h" +) + +include_directories( + "${CMAKE_CURRENT_BINARY_DIR}" +) + +set(CGI_SRC + base64.c + cgi.c + cookie.c + error.c + general.c + list.c + # md5.c + session.c + string.c +) + +# create binary +add_library(${PROJECT_NAME}-shared SHARED ${CGI_SRC}) +set_target_properties(${PROJECT_NAME}-shared PROPERTIES + OUTPUT_NAME ${PROJECT_NAME} + SOVERSION ${PACKAGE_MAJOR_VERSION} + VERSION ${PACKAGE_VERSION} +) + +# install binary +install(TARGETS ${PROJECT_NAME}-shared + EXPORT ${PROJECT_NAME}-targets + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" +) + +# install cmake targets +install(EXPORT ${PROJECT_NAME}-targets + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" +) + +# install headers +install(FILES + cgi.h + error.h + session.h + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}" +) diff --git a/src/config.h.cmake.in b/src/config.h.cmake.in new file mode 100644 index 0000000..29271cf --- /dev/null +++ b/src/config.h.cmake.in @@ -0,0 +1 @@ +#define HAVE_MD5 0