ocppi/CMakeLists.txt

101 lines
2.6 KiB
CMake

cmake_minimum_required(VERSION 3.23)
project(
ocppi
LANGUAGES CXX
VERSION 0.1.10)
option(OCPPI_BUILD_EXAMPLES "Build examples of ocppi or not"
${PROJECT_IS_TOP_LEVEL})
option(OCPPI_ENABLE_TESTING "Enable test of ocppi or not"
${PROJECT_IS_TOP_LEVEL})
option(OCPPI_BUILD_SHARED_LIBRARY "Build a shared library or not"
${PROJECT_IS_TOP_LEVEL})
option(OCPPI_INSTALL "Enable install target or not" ${PROJECT_IS_TOP_LEVEL})
include(./cmake/CPM.cmake)
CPMFindPackage(
NAME expected
VERSION 1.0.0 # NOTE: This project seems forget to update version in cmake
# when release 1.1.0.
GITHUB_REPOSITORY TartanLlama/expected
GIT_TAG v1.1.0
GIT_SHALLOW ON
OPTIONS "EXPECTED_BUILD_TESTS OFF"
FIND_PACKAGE_ARGUMENTS "NAMES tl-expected"
EXCLUDE_FROM_ALL ON)
if(NOT TARGET tl::expected)
# NOTE: v1.0.0 version of tl::expected doesn't have a namespaced alias so we
# have to add it here.
add_library(tl::expected ALIAS expected)
endif()
CPMFindPackage(
NAME semver
VERSION 0.3.0
GITHUB_REPOSITORY Neargye/Semver
GIT_TAG v0.3.0
GIT_SHALLOW ON
GIT_PROGRESS ON
EXCLUDE_FROM_ALL ON)
CPMFindPackage(
NAME nlohmann_json
VERSION 3.11.2
URL "https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz"
EXCLUDE_FROM_ALL ON
OPTIONS "JSON_Install ON")
CPMFindPackage(
NAME Boost COMPONENTS process
VERSION 1.74.0
# NOTE: 1.81.0 is the oldest release on gtihub
URL "https://github.com/boostorg/boost/releases/download/boost-1.81.0/boost-1.81.0.7z"
EXCLUDE_FROM_ALL ON)
CPMFindPackage(
NAME fmt
VERSION 9.1.0
GITHUB_REPOSITORY "fmtlib/fmt"
GIT_TAG "9.1.0"
GIT_SHALLOW ON
EXCLUDE_FROM_ALL ON
OPTIONS "CMAKE_POSITION_INDEPENDENT_CODE ON")
CPMFindPackage(
NAME spdlog
VERSION 1.10.0
GITHUB_REPOSITORY "gabime/spdlog"
GIT_TAG "v1.10.0"
GIT_SHALLOW ON
EXCLUDE_FROM_ALL ON
# NOTE: https://github.com/gabime/spdlog/issues/1190
OPTIONS "CMAKE_POSITION_INDEPENDENT_CODE ON" "SPDLOG_FMT_EXTERNAL ON")
include(./cmake/GitSemver.cmake)
set(OCPPI_SEMVER ${PROJECT_VERSION})
gitsemver(OCPPI_SEMVER)
set(OCPPI_OCI_RUNTIME_SPEC_MIN "1.0.0")
set(OCPPI_OCI_RUNTIME_SPEC_MAX "1.1.0")
set(OCPPI_LIBRARY_TYPE "STATIC")
if(OCPPI_BUILD_SHARED_LIBRARY)
set(OCPPI_LIBRARY_TYPE "SHARED")
endif()
set(OCPPI_SOVERSION 1)
set(CMAKE_CXX_FLAGS_DEBUG "-DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE")
include(./cmake/PFL.cmake)
set(OCPPI_LIBS common runtime cli)
pfl_init(ENABLE_TESTING ${OCPPI_ENABLE_TESTING} BUILD_EXAMPLES
${OCPPI_BUILD_EXAMPLES} INSTALL ${OCPPI_INSTALL})
pfl_add_libraries(VERSION ${PROJECT_VERSION} LIBS ${OCPPI_LIBS})