From 4cd48809ce10b5d7d2b3128e43ea19732e47873f Mon Sep 17 00:00:00 2001 From: Caleb Xu Date: Wed, 18 Aug 2021 00:48:30 -0400 Subject: [PATCH] libsdptransform: support additional CMake build options --- deps/libsdptransform/CMakeLists.txt | 38 ++++++++++++++----- .../{sdptransform.hpp => sdptransform.hpp.in} | 2 +- .../readme-helper/CMakeLists.txt | 2 - deps/libsdptransform/test/CMakeLists.txt | 4 +- .../{include => thirdparty}/json.hpp | 0 5 files changed, 31 insertions(+), 15 deletions(-) rename deps/libsdptransform/include/{sdptransform.hpp => sdptransform.hpp.in} (96%) rename deps/libsdptransform/{include => thirdparty}/json.hpp (100%) diff --git a/deps/libsdptransform/CMakeLists.txt b/deps/libsdptransform/CMakeLists.txt index b4f4648b..8b9c7872 100644 --- a/deps/libsdptransform/CMakeLists.txt +++ b/deps/libsdptransform/CMakeLists.txt @@ -9,10 +9,6 @@ set(CMAKE_CXX_EXTENSIONS OFF) # For CMake < 3.1. add_compile_options(-std=c++11) -subdirs(test readme-helper) - -include_directories(${sdptransform_SOURCE_DIR}/include) - set( SOURCE_FILES src/grammar.cpp @@ -22,11 +18,35 @@ set( set( HEADER_FILES - include/sdptransform.hpp - include/json.hpp + ${sdptransform_BINARY_DIR}/include/sdptransform.hpp ) -add_library(sdptransform STATIC ${SOURCE_FILES} ${HEADER_FILES}) - -install(TARGETS sdptransform DESTINATION lib) +option(BUILD_TESTS "Build tests" ON) +if(BUILD_TESTS) + add_subdirectory(test) +endif() + +option(BUILD_README_HELPER "Build readme-helper" ON) +if(BUILD_README_HELPER) + add_subdirectory(readme-helper) +endif() + +option(BUILD_SHARED_LIBS "Build shared library" OFF) +add_library(sdptransform ${SOURCE_FILES}) + +target_include_directories(sdptransform PUBLIC ${sdptransform_BINARY_DIR}/include) + +option(USE_EXTERNAL_JSON "Use external nlohmann_json instead of bundled" OFF) +if(USE_EXTERNAL_JSON) + find_package(nlohmann_json REQUIRED) + target_link_libraries(sdptransform nlohmann_json::nlohmann_json) + set(JSON_HPP_LOCATION "") +else() + target_include_directories(sdptransform PUBLIC thirdparty) + list(APPEND HEADER_FILES thirdparty/json.hpp) + set(JSON_HPP_LOCATION "\"json.hpp\"") +endif() +configure_file(include/sdptransform.hpp.in include/sdptransform.hpp) + +install(TARGETS sdptransform) install(FILES ${HEADER_FILES} DESTINATION include/sdptransform) diff --git a/deps/libsdptransform/include/sdptransform.hpp b/deps/libsdptransform/include/sdptransform.hpp.in similarity index 96% rename from deps/libsdptransform/include/sdptransform.hpp rename to deps/libsdptransform/include/sdptransform.hpp.in index cdf68282..5fd2296f 100644 --- a/deps/libsdptransform/include/sdptransform.hpp +++ b/deps/libsdptransform/include/sdptransform.hpp.in @@ -1,7 +1,7 @@ #ifndef SDPTRANSFORM_HPP #define SDPTRANSFORM_HPP -#include "json.hpp" +#include @JSON_HPP_LOCATION@ #include #include #include diff --git a/deps/libsdptransform/readme-helper/CMakeLists.txt b/deps/libsdptransform/readme-helper/CMakeLists.txt index 97d75c08..d5e45c97 100644 --- a/deps/libsdptransform/readme-helper/CMakeLists.txt +++ b/deps/libsdptransform/readme-helper/CMakeLists.txt @@ -1,5 +1,3 @@ -include_directories(${sdptransform_SOURCE_DIR}/include) - set( SOURCE_FILES readme.cpp diff --git a/deps/libsdptransform/test/CMakeLists.txt b/deps/libsdptransform/test/CMakeLists.txt index 239e0f7c..7c9dd28b 100644 --- a/deps/libsdptransform/test/CMakeLists.txt +++ b/deps/libsdptransform/test/CMakeLists.txt @@ -1,6 +1,3 @@ -include_directories(${sdptransform_SOURCE_DIR}/include) -include_directories(include) - set( SOURCE_FILES tests.cpp @@ -14,6 +11,7 @@ set( ) add_executable(test_sdptransform ${SOURCE_FILES} ${HEADER_FILES}) +target_include_directories(test_sdptransform PRIVATE include) if(${CMAKE_SYSTEM_NAME} STREQUAL "Android") target_link_libraries(test_sdptransform sdptransform android log) diff --git a/deps/libsdptransform/include/json.hpp b/deps/libsdptransform/thirdparty/json.hpp similarity index 100% rename from deps/libsdptransform/include/json.hpp rename to deps/libsdptransform/thirdparty/json.hpp