diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f9689a..158ac18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,8 @@ cmake_minimum_required(VERSION 3.14) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") +include(dylib) + project(dylib CXX) if(NOT "${CMAKE_CXX_STANDARD}") @@ -67,81 +70,3 @@ if(DYLIB_BUILD_TESTS) include(GoogleTest) gtest_discover_tests(unit_tests PROPERTIES DISCOVERY_TIMEOUT 600 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) endif() - -set(CPACK_PACKAGE_NAME "dylib") -set(CPACK_PACKAGE_VENDOR "Martin Olivier") -set(CPACK_PACKAGE_VERSION_MAJOR "2") -set(CPACK_PACKAGE_VERSION_MINOR "2") -set(CPACK_PACKAGE_VERSION_PATCH "0") -set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") -set(CPACK_PACKAGE_DESCRIPTION "C++ cross-platform wrapper around dynamic loading of shared libraries") -set(CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") -set(CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") - -include(CPackComponent) -include(CMakePackageConfigHelpers) - -set(PackagingTemplatesDir "${CMAKE_CURRENT_SOURCE_DIR}/packaging") - -set(LIB_NAME "dylib") -string(TOUPPER "${LIB_NAME}" LIB_NAME_UPPER) -set(CMAKE_EXPORT_NAME "${LIB_NAME}") -set(PKG_CONFIG_NAME "${LIB_NAME}") - -cpack_add_component(dev - DISPLAY_NAME "${LIB_NAME} header" - DESCRIPTION "The header needed for using ${LIB_NAME} in own software" -) - -install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/${LIB_NAME}.hpp" - TYPE INCLUDE - COMPONENT "dev" -) - -set(PKG_CONFIG_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${PKG_CONFIG_NAME}.pc") -configure_file("${PackagingTemplatesDir}/pkgconfig.pc.in" "${PKG_CONFIG_FILE_NAME}" @ONLY) -install(FILES "${PKG_CONFIG_FILE_NAME}" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" - COMPONENT "dev" -) - -set(CMAKE_CONFIG_FILE_BASENAME "${CMAKE_EXPORT_NAME}Config.cmake") -set(CMAKE_CONFIG_VERSION_FILE_BASENAME "${CMAKE_EXPORT_NAME}ConfigVersion.cmake") -set(CMAKE_CONFIG_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CONFIG_FILE_BASENAME}") -configure_package_config_file("${PackagingTemplatesDir}/CMakeConfig.cmake.in" "${CMAKE_CONFIG_FILE_NAME}" - INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake" -) - -set(CMAKE_CONFIG_VERSION_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CONFIG_VERSION_FILE_BASENAME}") -write_basic_package_version_file( - "${CMAKE_CONFIG_VERSION_FILE_NAME}" - VERSION "100500.100500.100500" # any version of same bitness suits. CMake cannot compare to infinity - COMPATIBILITY AnyNewerVersion -) - -install(FILES "${CMAKE_CONFIG_FILE_NAME}" "${CMAKE_CONFIG_VERSION_FILE_NAME}" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_EXPORT_NAME}" - COMPONENT "dev" -) - -set("CPACK_DEBIAN_DEV_PACKAGE_NAME" "lib${LIB_NAME}-dev") -set("CPACK_DEBIAN_DEV_PACKAGE_DEPENDS" "libc6-dev") -set("CPACK_DEBIAN_DEV_PACKAGE_SUGGESTS" "cmake, pkg-config, pkg-conf") - -set("CPACK_RPM_DEV_PACKAGE_NAME" "lib${LIB_NAME}-devel") -set("CPACK_RPM_DEV_PACKAGE_SUGGESTS" "${CPACK_DEBIAN_DEV_PACKAGE_SUGGESTS}") - -set(CPACK_COMPONENTS_ALL "dev") - -set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/martin-olivier/dylib") -set(CPACK_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") -set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_MAINTAINER}") -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") -set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") -set(CPACK_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") -set(CPACK_DEB_COMPONENT_INSTALL ON) -set(CPACK_RPM_COMPONENT_INSTALL ON) -set(CPACK_NSIS_COMPONENT_INSTALL ON) -set(CPACK_DEBIAN_COMPRESSION_TYPE "xz") - -include(CPack) \ No newline at end of file diff --git a/README.md b/README.md index c2c64bc..0e81c74 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # dylib -[![version](https://img.shields.io/badge/Version-2.2.0-blue.svg)](https://github.com/martin-olivier/dylib/releases/tag/v2.2.0) +[![version](https://img.shields.io/badge/Version-2.2.1-blue.svg)](https://github.com/martin-olivier/dylib/releases/tag/v2.2.1) [![license](https://img.shields.io/badge/License-MIT-orange.svg)](https://github.com/martin-olivier/dylib/blob/main/LICENSE) [![cpp](https://img.shields.io/badge/Compatibility-C++11-darkgreen.svg)](https://isocpp.org) @@ -25,13 +25,13 @@ include(FetchContent) FetchContent_Declare( dylib GIT_REPOSITORY "https://github.com/martin-olivier/dylib" - GIT_TAG "v2.2.0" + GIT_TAG "v2.2.1" ) FetchContent_MakeAvailable(dylib) ``` -You can also click [HERE](https://github.com/martin-olivier/dylib/releases/download/v2.2.0/dylib.hpp) to download the `dylib` header file. +You can also click [HERE](https://github.com/martin-olivier/dylib/releases/download/v2.2.1/dylib.hpp) to download the `dylib` header file. ## Documentation diff --git a/cmake/dylib.cmake b/cmake/dylib.cmake new file mode 100644 index 0000000..2293233 --- /dev/null +++ b/cmake/dylib.cmake @@ -0,0 +1,76 @@ +set(CPACK_PACKAGE_NAME "dylib") +set(CPACK_PACKAGE_VENDOR "Martin Olivier") +set(CPACK_PACKAGE_VERSION_MAJOR "2") +set(CPACK_PACKAGE_VERSION_MINOR "2") +set(CPACK_PACKAGE_VERSION_PATCH "1") +set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") +set(CPACK_PACKAGE_DESCRIPTION "C++ cross-platform wrapper around dynamic loading of shared libraries") +set(CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") +set(CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") + +include(CPackComponent) +include(CMakePackageConfigHelpers) + +set(PackagingTemplatesDir "${CMAKE_CURRENT_SOURCE_DIR}/packaging") + +set(LIB_NAME "dylib") +set(CMAKE_EXPORT_NAME "${LIB_NAME}") +set(PKG_CONFIG_NAME "${LIB_NAME}") + +cpack_add_component(dev + DISPLAY_NAME "${LIB_NAME} header" + DESCRIPTION "The header needed for using ${LIB_NAME} in own software" +) + +install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/${LIB_NAME}.hpp" + TYPE INCLUDE + COMPONENT "dev" +) + +set(PKG_CONFIG_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${PKG_CONFIG_NAME}.pc") +configure_file("${PackagingTemplatesDir}/pkgconfig.pc.in" "${PKG_CONFIG_FILE_NAME}" @ONLY) +install(FILES "${PKG_CONFIG_FILE_NAME}" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" + COMPONENT "dev" +) + +set(CMAKE_CONFIG_FILE_BASENAME "${CMAKE_EXPORT_NAME}Config.cmake") +set(CMAKE_CONFIG_VERSION_FILE_BASENAME "${CMAKE_EXPORT_NAME}ConfigVersion.cmake") +set(CMAKE_CONFIG_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CONFIG_FILE_BASENAME}") +configure_package_config_file("${PackagingTemplatesDir}/CMakeConfig.cmake.in" "${CMAKE_CONFIG_FILE_NAME}" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake" +) + +set(CMAKE_CONFIG_VERSION_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CONFIG_VERSION_FILE_BASENAME}") +write_basic_package_version_file( + "${CMAKE_CONFIG_VERSION_FILE_NAME}" + VERSION "100500.100500.100500" # any version of same bitness suits. CMake cannot compare to infinity + COMPATIBILITY AnyNewerVersion +) + +install(FILES "${CMAKE_CONFIG_FILE_NAME}" "${CMAKE_CONFIG_VERSION_FILE_NAME}" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_EXPORT_NAME}" + COMPONENT "dev" +) + +set("CPACK_DEBIAN_DEV_PACKAGE_NAME" "lib${LIB_NAME}-dev") +set("CPACK_DEBIAN_DEV_PACKAGE_DEPENDS" "libc6-dev") +set("CPACK_DEBIAN_DEV_PACKAGE_SUGGESTS" "cmake, pkg-config, pkg-conf") + +set("CPACK_RPM_DEV_PACKAGE_NAME" "lib${LIB_NAME}-devel") +set("CPACK_RPM_DEV_PACKAGE_SUGGESTS" "${CPACK_DEBIAN_DEV_PACKAGE_SUGGESTS}") + +set(CPACK_COMPONENTS_ALL "dev") + +set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/martin-olivier/dylib") +set(CPACK_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_MAINTAINER}") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") +set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") +set(CPACK_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") +set(CPACK_DEB_COMPONENT_INSTALL ON) +set(CPACK_RPM_COMPONENT_INSTALL ON) +set(CPACK_NSIS_COMPONENT_INSTALL ON) +set(CPACK_DEBIAN_COMPRESSION_TYPE "xz") + +include(CPack) diff --git a/include/dylib.hpp b/include/dylib.hpp index 85bbadf..bbca228 100644 --- a/include/dylib.hpp +++ b/include/dylib.hpp @@ -1,6 +1,6 @@ /** * @file dylib.hpp - * @version 2.2.0 + * @version 2.2.1 * @brief C++ cross-platform wrapper around dynamic loading of shared libraries * @link https://github.com/martin-olivier/dylib *