Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -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
18 changes: 16 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
Expand All @@ -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)
Expand Down
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```
1 change: 1 addition & 0 deletions submodules/extism
Submodule extism added at 7636c8
1 change: 1 addition & 0 deletions submodules/jsoncpp
Submodule jsoncpp added at 69098a