From 15ede8b64fe9418735cb3c17f4c579a17f7bce7c Mon Sep 17 00:00:00 2001 From: James Pace Date: Mon, 8 Nov 2021 04:26:35 +0000 Subject: [PATCH] First pass at super project build. --- CMakeLists.txt | 17 ++++++++++++++--- external-deps.cmake | 26 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 external-deps.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index c6e1b0f..0cc266e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,21 @@ cmake_minimum_required(VERSION 3.5) -project(jwp-mosquitto-plugin) +# https://github.com/Sarcasm/cmake-superbuild/ +option (USE_SUPERBUILD "Whether or not a superbuild should be invoked" ON) -add_subdirectory(ext/jwt-cpp) +if (USE_SUPERBUILD) + project(jwp-mosquitto-plugin-super) + include(external-deps.cmake) + return() +else() + project(jwp-mosquitto-plugin) +endif() + +find_package(jwt-cpp) +find_package(OpenSSL) add_library(jwp-plugin SHARED src/jwp-plugin.cpp) add_executable(jwt-example src/jwt-example.cpp) -target_link_libraries(jwt-example PRIVATE jwt-cpp) +target_include_directories(jwt-example PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/jwt-cpp/include) +target_link_libraries(jwt-example OpenSSL::Crypto) diff --git a/external-deps.cmake b/external-deps.cmake new file mode 100644 index 0000000..a65b7f1 --- /dev/null +++ b/external-deps.cmake @@ -0,0 +1,26 @@ +include (ExternalProject) + +set (DEPENDENCIES) +set (EXTRA_CMAKE_ARGS) + +list(APPEND DEPENDENCIES ep_jwt-cpp) +ExternalProject_Add(ep_jwt-cpp + PREFIX ep_jwt-cpp + GIT_REPOSITORY "https://github.com/Thalhammer/jwt-cpp.git" + GIT_TAG "v0.5.2" + GIT_SHALLOW "True" + CMAKE_ARGS -DJWT_CMAKE_FILES_INSTALL_DIR=${CMAKE_CURRENT_BINARY_DIR}/jwt-cpp -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/jwt-cpp + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/jwt-cpp +) +list (APPEND EXTRA_CMAKE_ARGS + -Djwt-cpp_DIR=${CMAKE_CURRENT_BINARY_DIR}/jwt-cpp +) + +ExternalProject_Add (ep_jwp-mosquitto-plugin + PREFIX ep_jwp-mosquitto-plugin + DEPENDS ${DEPENDENCIES} + SOURCE_DIR "${PROJECT_SOURCE_DIR}" + CMAKE_ARGS -DUSE_SUPERBUILD=OFF ${EXTRA_CMAKE_ARGS} + INSTALL_COMMAND "" + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} +)