Jsonnet: Use `FetchContent` instead of git submodule
- Update instructions
- Tested with CMake 3.13
diff --git a/.gitmodules b/.gitmodules
index acd11e8..9575a07 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,6 @@
[submodule "oss-internship-2020/sapi_lodepng/lodepng"]
path = oss-internship-2020/lodepng/lodepng
url = https://github.com/lvandeve/lodepng
-[submodule "oss-internship-2020/jsonnet/jsonnet"]
- path = oss-internship-2020/jsonnet/jsonnet
- url = https://github.com/google/jsonnet.git
[submodule "oss-internship-2020/openjpeg/openjpeg"]
path = oss-internship-2020/openjpeg/openjpeg
url = https://github.com/uclouvain/openjpeg.git
diff --git a/oss-internship-2020/jsonnet/CMakeLists.txt b/oss-internship-2020/jsonnet/CMakeLists.txt
index 6934f8a..e413fbd 100644
--- a/oss-internship-2020/jsonnet/CMakeLists.txt
+++ b/oss-internship-2020/jsonnet/CMakeLists.txt
@@ -12,25 +12,29 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-cmake_minimum_required(VERSION 3.10)
-
+cmake_minimum_required(VERSION 3.13..3.22)
project(jsonnet-sapi C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
-add_subdirectory(jsonnet)
-
-add_subdirectory(examples)
-
set(SAPI_ROOT "../.." CACHE PATH "Path to the Sandboxed API source tree")
-set(SAPI_ENABLE_EXAMPLES OFF CACHE BOOL "")
-set(SAPI_ENABLE_TESTS OFF CACHE BOOL "")
add_subdirectory("${SAPI_ROOT}"
"${CMAKE_BINARY_DIR}/sandboxed-api-build"
EXCLUDE_FROM_ALL)
+FetchContent_Declare(jsonnet
+ GIT_REPOSITORY https://github.com/google/jsonnet.git
+ GIT_TAG v0.18.0 # 2021-12-21
+)
+set(BUILD_TESTS OFF)
+FetchContent_MakeAvailable(jsonnet)
+create_directory_symlink("${jsonnet_SOURCE_DIR}"
+ "${PROJECT_BINARY_DIR}/jsonnet")
+
+add_subdirectory(examples)
+
add_sapi_library(jsonnet_sapi
FUNCTIONS c_free_input
c_jsonnet_destroy
@@ -56,4 +60,9 @@
target_link_libraries(jsonnet_sapi PUBLIC jsonnet_helper)
-add_subdirectory(tests)
+if(SAPI_ENABLE_TESTS)
+ include(GoogleTest)
+ enable_testing()
+
+ add_subdirectory(tests)
+endif()
diff --git a/oss-internship-2020/jsonnet/README.md b/oss-internship-2020/jsonnet/README.md
index 43e46db..fc30b41 100644
--- a/oss-internship-2020/jsonnet/README.md
+++ b/oss-internship-2020/jsonnet/README.md
@@ -1,6 +1,6 @@
# Jsonnet Sandboxed API
-This library provides sandboxed version of the
+This library provides a sandboxed version of the
[Jsonnet](https://github.com/google/jsonnet) library.
## Examples
@@ -22,18 +22,12 @@
## Build
-To build these examples, after cloning the whole Sandbox API project, you also
-need to run
+To build these examples, after cloning the whole Sandbox API project, this
+in the `sandboxed-api/oss-internship-2020/jsonnet`:
```
-git submodule update --init --recursive
-```
-anywhere in the project tree in order to clone the `jsonnet` submodule.
-Then in the `sandboxed-api/oss-internship-2020/jsonnet` run
-
-```
-mkdir build && cd build
-cmake -G Ninja
+mkdir -p build && cd build
+cmake .. -G Ninja -Wno-dev -DSAPI_ENABLE_TESTS=ON
ninja
```
@@ -79,6 +73,5 @@
the `tests/` directory. To run them type:
```
-cd tests
-./tests
+ctest ./tests
```
diff --git a/oss-internship-2020/jsonnet/examples/CMakeLists.txt b/oss-internship-2020/jsonnet/examples/CMakeLists.txt
index 64865d4..40318f3 100644
--- a/oss-internship-2020/jsonnet/examples/CMakeLists.txt
+++ b/oss-internship-2020/jsonnet/examples/CMakeLists.txt
@@ -13,7 +13,7 @@
# limitations under the License.
file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/gen_files")
-file(COPY "${PROJECT_SOURCE_DIR}/jsonnet/cmd/jsonnet.cpp" DESTINATION "${PROJECT_BINARY_DIR}/gen_files/")
+file(COPY "${jsonnet_SOURCE_DIR}/cmd/jsonnet.cpp" DESTINATION "${PROJECT_BINARY_DIR}/gen_files/")
file(COPY "${PROJECT_SOURCE_DIR}/jsonnet.patch" DESTINATION "${PROJECT_BINARY_DIR}/gen_files/")
add_custom_command(
@@ -22,34 +22,35 @@
COMMAND mv ${PROJECT_BINARY_DIR}/gen_files/jsonnet.cpp ${PROJECT_BINARY_DIR}/gen_files/write_helper.cc
)
-list(APPEND JSONNET_SAPI_HEADERS
+list(APPEND JSONNET_SAPI_INCLUDE_DIRS
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/headers
+ ${PROJECT_BINARY_DIR}
${PROJECT_BINARY_DIR}/gen_files
)
add_library(jsonnet_helper STATIC
${PROJECT_SOURCE_DIR}/jsonnet_helper.cc
${PROJECT_SOURCE_DIR}/jsonnet_helper.h
- ${PROJECT_SOURCE_DIR}/jsonnet/cmd/utils.h
- ${PROJECT_SOURCE_DIR}/jsonnet/cmd/utils.cpp
+ ${jsonnet_SOURCE_DIR}/cmd/utils.h
+ ${jsonnet_SOURCE_DIR}/cmd/utils.cpp
${PROJECT_BINARY_DIR}/gen_files/write_helper.cc
)
target_include_directories(jsonnet_helper PUBLIC
- ${JSONNET_SAPI_HEADERS}
+ ${JSONNET_SAPI_INCLUDE_DIRS}
)
target_link_libraries(jsonnet_helper
libjsonnet_for_binaries
)
-foreach(exe base multiple_files yaml_stream formatter)
- add_executable(jsonnet_${exe}_sandboxed
- jsonnet_${exe}_example.cc
+foreach(target IN ITEMS base multiple_files yaml_stream formatter)
+ add_executable(jsonnet_${target}_sandboxed
+ jsonnet_${target}_example.cc
)
- target_link_libraries(jsonnet_${exe}_sandboxed PRIVATE
+ target_link_libraries(jsonnet_${target}_sandboxed PRIVATE
libjsonnet
jsonnet_helper
jsonnet_sapi
@@ -58,8 +59,8 @@
sapi::sapi
)
- target_include_directories(jsonnet_${exe}_sandboxed PUBLIC
- ${JSONNET_SAPI_HEADERS}
+ target_include_directories(jsonnet_${target}_sandboxed PUBLIC
+ ${JSONNET_SAPI_INCLUDE_DIRS}
)
endforeach()
diff --git a/oss-internship-2020/jsonnet/jsonnet b/oss-internship-2020/jsonnet/jsonnet
deleted file mode 160000
index 3e25595..0000000
--- a/oss-internship-2020/jsonnet/jsonnet
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 3e25595d5c4acd32a1c3951a57471986b90d3bad
diff --git a/oss-internship-2020/jsonnet/tests/CMakeLists.txt b/oss-internship-2020/jsonnet/tests/CMakeLists.txt
index 93720de..a408edb 100644
--- a/oss-internship-2020/jsonnet/tests/CMakeLists.txt
+++ b/oss-internship-2020/jsonnet/tests/CMakeLists.txt
@@ -12,8 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-include(GoogleTest)
-
# We need to prepare convenient directories so the tests will be able to access them
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/tests/tests_input)
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/tests/tests_output)