diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..76b1409 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "submodules/extism"] + path = submodules/extism + url = https://github.com/extism/extism.git +[submodule "submodules/jsoncpp"] + path = submodules/jsoncpp + url = https://github.com/open-source-parsers/jsoncpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 26e9fa9..c797d09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,12 +9,22 @@ link_directories(/opt/homebrew/lib) project(extism-cpp VERSION 1.0.0 DESCRIPTION "C++ bindings for libextism") set(extism-cpp-srcs src/manifest.cpp src/current_plugin.cpp src/plugin.cpp src/function.cpp src/extism.cpp) +option(EXTISM_CPP_BUILD_IN_TREE "Set to ON to build with submodule deps" OFF) +if(EXTISM_CPP_BUILD_IN_TREE) + add_subdirectory(submodules/extism/libextism) + add_subdirectory(submodules/jsoncpp) +endif() + # SHARED add_library(extism-cpp SHARED ${extism-cpp-srcs}) set_target_properties(extism-cpp PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties(extism-cpp PROPERTIES PUBLIC_HEADER src/extism.hpp) target_include_directories(extism-cpp PUBLIC src) -target_link_libraries(extism-cpp PUBLIC extism jsoncpp) +if(EXTISM_CPP_BUILD_IN_TREE) + target_link_libraries(extism-cpp PUBLIC extism-shared jsoncpp) +else() + target_link_libraries(extism-cpp PUBLIC extism jsoncpp) +endif() set_target_properties(extism-cpp PROPERTIES NO_SONAME 1 ) @@ -26,7 +36,11 @@ set_target_properties(extism-cpp-static PROPERTIES OUTPUT_NAME extism-cpp) set_target_properties(extism-cpp-static PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties(extism-cpp-static PROPERTIES PUBLIC_HEADER src/extism.hpp) target_include_directories(extism-cpp-static PUBLIC src) -target_link_libraries(extism-cpp-static PUBLIC libextism.a jsoncpp) +if(EXTISM_CPP_BUILD_IN_TREE) + target_link_libraries(extism-cpp-static PUBLIC extism-static jsoncpp_static) +else() + target_link_libraries(extism-cpp-static PUBLIC libextism.a jsoncpp) +endif() configure_file(extism-cpp-static.pc.in extism-cpp-static.pc @ONLY) include(GNUInstallDirs) diff --git a/README.md b/README.md index 7bc491f..d2bbdec 100644 --- a/README.md +++ b/README.md @@ -63,3 +63,13 @@ $ pkg-config --libs extism-cpp ```shell $ pkg-config --static --libs extism-cpp-static ``` + +## In-Tree builds + +If you wish, instead of using installed deps, you can do an in-tree build: + +```shell +git clone --recurse-submodules -j4 https://github.com/extism/cpp-sdk.git +cd cpp-sdk +cmake -DEXTISM_CPP_BUILD_IN_TREE=1 -B build && cmake --build build +``` diff --git a/submodules/extism b/submodules/extism new file mode 160000 index 0000000..7636c87 --- /dev/null +++ b/submodules/extism @@ -0,0 +1 @@ +Subproject commit 7636c87319ba189825302ab24084214a43163b2b diff --git a/submodules/jsoncpp b/submodules/jsoncpp new file mode 160000 index 0000000..69098a1 --- /dev/null +++ b/submodules/jsoncpp @@ -0,0 +1 @@ +Subproject commit 69098a18b9af0c47549d9a271c054d13ca92b006