2024-05-13 02:00:40 +02:00
|
|
|
# docpp CMakeLists.txt
|
2024-05-05 23:31:42 +02:00
|
|
|
cmake_minimum_required(VERSION 3.1...3.29)
|
|
|
|
|
2024-05-13 02:46:21 +02:00
|
|
|
project(docpp VERSION 0.0.1
|
2024-05-14 10:04:32 +02:00
|
|
|
DESCRIPTION "C++ library for generating XML, HTML and CSS."
|
2024-05-13 02:00:40 +02:00
|
|
|
HOMEPAGE_URL "https://speedie.site/docpp"
|
|
|
|
LANGUAGES CXX
|
|
|
|
)
|
|
|
|
|
2024-05-14 15:39:50 +02:00
|
|
|
include(GNUInstallDirs)
|
|
|
|
include(CMakePackageConfigHelpers)
|
|
|
|
|
2024-05-13 02:00:40 +02:00
|
|
|
if (NOT DEFINED CMAKE_BUILD_TYPE)
|
|
|
|
set(CMAKE_BUILD_TYPE Debug)
|
|
|
|
endif()
|
2024-05-05 23:31:42 +02:00
|
|
|
|
2024-05-13 02:00:40 +02:00
|
|
|
if (MSVC AND CMAKE_BUILD_TYPE STREQUAL "Debug")
|
2024-05-05 23:31:42 +02:00
|
|
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
|
|
|
endif()
|
|
|
|
|
2024-05-06 01:00:54 +02:00
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
2024-05-06 00:26:23 +02:00
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
2024-05-05 23:31:42 +02:00
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
|
|
|
|
add_library(${PROJECT_NAME} SHARED)
|
|
|
|
|
|
|
|
target_sources(${PROJECT_NAME} PRIVATE
|
|
|
|
"src/docpp.cpp"
|
|
|
|
)
|
|
|
|
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE "${PROJECT_SOURCE_DIR}")
|
|
|
|
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
|
|
|
VERSION ${PROJECT_VERSION}
|
|
|
|
SOVERSION ${PROJECT_VERSION}
|
|
|
|
PUBLIC_HEADER "include/docpp.hpp"
|
|
|
|
)
|
|
|
|
|
|
|
|
install(TARGETS ${PROJECT_NAME}
|
|
|
|
EXPORT ${PROJECT_NAME}Targets
|
|
|
|
FILE_SET HEADERS
|
2024-05-14 15:39:50 +02:00
|
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
|
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/docpp
|
|
|
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
2024-05-05 23:31:42 +02:00
|
|
|
|
|
|
|
write_basic_package_version_file(
|
|
|
|
"${PROJECT_NAME}ConfigVersion.cmake"
|
|
|
|
VERSION ${PROJECT_VERSION}
|
|
|
|
COMPATIBILITY AnyNewerVersion)
|
|
|
|
|
|
|
|
install(EXPORT ${PROJECT_NAME}Targets
|
|
|
|
FILE ${PROJECT_NAME}Targets.cmake
|
|
|
|
NAMESPACE docpp::
|
2024-05-14 15:39:50 +02:00
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
2024-05-05 23:31:42 +02:00
|
|
|
|
|
|
|
install(FILES "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake"
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
2024-05-14 15:39:50 +02:00
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
2024-05-05 23:31:42 +02:00
|
|
|
|
2024-05-13 02:00:40 +02:00
|
|
|
if (NOT WIN32 AND NOT APPLE)
|
|
|
|
configure_file(${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.pc.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc @ONLY
|
|
|
|
)
|
|
|
|
|
|
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
|
2024-05-14 15:39:50 +02:00
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
2024-05-05 23:31:42 +02:00
|
|
|
endif()
|
|
|
|
|
2024-05-13 02:00:40 +02:00
|
|
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
|
find_package(Catch2 3 REQUIRED)
|
2024-05-05 23:31:42 +02:00
|
|
|
|
2024-05-13 02:00:40 +02:00
|
|
|
add_executable(${PROJECT_NAME}_test
|
|
|
|
tests/test.cpp
|
|
|
|
)
|
2024-05-05 23:31:42 +02:00
|
|
|
|
2024-05-13 02:00:40 +02:00
|
|
|
target_include_directories(${PROJECT_NAME}_test PRIVATE
|
|
|
|
"${PROJECT_SOURCE_DIR}"
|
|
|
|
)
|
2024-05-05 23:31:42 +02:00
|
|
|
|
2024-05-13 02:00:40 +02:00
|
|
|
target_link_libraries(${PROJECT_NAME}_test PRIVATE
|
|
|
|
Catch2::Catch2WithMain
|
|
|
|
)
|
2024-05-05 23:31:42 +02:00
|
|
|
|
2024-05-13 02:00:40 +02:00
|
|
|
add_custom_command(
|
|
|
|
TARGET ${PROJECT_NAME}_test
|
|
|
|
COMMENT "Run tests"
|
|
|
|
POST_BUILD
|
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
2024-05-14 20:33:05 +02:00
|
|
|
COMMAND ${PROJECT_NAME}_test
|
2024-05-13 02:00:40 +02:00
|
|
|
)
|
|
|
|
endif()
|
2024-05-13 15:09:20 +02:00
|
|
|
|
|
|
|
if (NOT WIN32)
|
2024-05-14 15:39:50 +02:00
|
|
|
if (EXISTS "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.PKGBUILD.in" AND
|
|
|
|
GENERATE_PKGBUILD)
|
2024-05-13 15:09:20 +02:00
|
|
|
configure_file(${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.PKGBUILD.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/PKGBUILD @ONLY
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2024-05-14 15:39:50 +02:00
|
|
|
if (BUILD_TARBALL OR GENERATE_EBUILD)
|
2024-05-13 15:09:20 +02:00
|
|
|
add_custom_command(
|
|
|
|
TARGET ${PROJECT_NAME}
|
|
|
|
COMMENT "Create tarball"
|
|
|
|
POST_BUILD
|
|
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
|
|
COMMAND scripts/${PROJECT_NAME}_make dist && mv ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.tar.gz* ${CMAKE_BINARY_DIR}
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2024-05-14 15:39:50 +02:00
|
|
|
if (EXISTS "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.ebuild.in" AND
|
|
|
|
GENERATE_EBUILD )
|
|
|
|
configure_file(${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.ebuild.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.ebuild @ONLY
|
2024-05-13 15:09:20 +02:00
|
|
|
)
|
|
|
|
add_custom_command(
|
|
|
|
TARGET ${PROJECT_NAME}
|
2024-05-14 15:39:50 +02:00
|
|
|
COMMENT "Copy ebuild and generate manifest"
|
2024-05-13 15:09:20 +02:00
|
|
|
POST_BUILD
|
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
2024-05-14 15:39:50 +02:00
|
|
|
COMMAND cp
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.ebuild
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-9999.ebuild &&
|
|
|
|
${PROJECT_SOURCE_DIR}/scripts/generate_manifest
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.tar.gz
|
|
|
|
> ${CMAKE_CURRENT_BINARY_DIR}/Manifest
|
2024-05-13 15:09:20 +02:00
|
|
|
)
|
|
|
|
endif()
|
|
|
|
endif()
|