Skip to content

Commit 7317fe1

Browse files
committed
Don't reinitialize submodules
Add ability to turn competitive benchmarks off (no need for submodules)
1 parent 7b58fea commit 7317fe1

File tree

6 files changed

+100
-81
lines changed

6 files changed

+100
-81
lines changed

.drone.yml

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -226,35 +226,36 @@ steps:
226226
CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF
227227
commands:
228228
- apt-get update -qq
229-
- apt-get install -y clang make cmake
229+
- apt-get install -y clang make cmake git
230+
- $CC --version
231+
- mkdir build && cd build
232+
- cmake $CMAKE_FLAGS ..
233+
- make -j
234+
- ctest --output-on-failure
235+
---
236+
kind: pipeline
237+
name: amd64_clang_cmake_no_exceptions
238+
239+
platform:
240+
os: linux
241+
arch: amd64
242+
243+
steps:
244+
- name: Build and Test
245+
image: ubuntu:18.04
246+
environment:
247+
CC: clang
248+
CXX: clang++
249+
CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF
250+
commands:
251+
- apt-get update -qq
252+
- apt-get install -y clang make cmake git
230253
- $CC --version
231254
- mkdir build && cd build
232255
- cmake $CMAKE_FLAGS ..
233256
- make -j
234257
- ctest --output-on-failure
235258
---
236-
kind: pipeline
237-
name: amd64_clang_cmake_no_exceptions
238-
239-
platform:
240-
os: linux
241-
arch: amd64
242-
243-
steps:
244-
- name: Build and Test
245-
image: ubuntu:18.04
246-
environment:
247-
CC: clang
248-
CXX: clang++
249-
CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF
250-
commands:
251-
- apt-get update -qq
252-
- apt-get install -y clang make cmake
253-
- $CC --version
254-
- mkdir build && cd build
255-
- cmake $CMAKE_FLAGS ..
256-
- make -j
257-
- ctest --output-on-failure
258259
kind: pipeline
259260
name: amd64_clang_cmake_static
260261

@@ -271,7 +272,7 @@ steps:
271272
CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=ON
272273
commands:
273274
- apt-get update -qq
274-
- apt-get install -y clang make cmake
275+
- apt-get install -y clang make cmake git
275276
- $CC --version
276277
- mkdir build && cd build
277278
- cmake $CMAKE_FLAGS ..
@@ -340,7 +341,7 @@ steps:
340341
CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF
341342
commands:
342343
- apt-get update -qq
343-
- apt-get install -y clang make cmake
344+
- apt-get install -y clang make cmake git
344345
- $CC --version
345346
- mkdir build && cd build
346347
- cmake $CMAKE_FLAGS ..
@@ -386,7 +387,7 @@ steps:
386387
CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=ON
387388
commands:
388389
- apt-get update -qq
389-
- apt-get install -y clang make cmake
390+
- apt-get install -y clang make cmake git
390391
- $CC --version
391392
- mkdir build && cd build
392393
- cmake $CMAKE_FLAGS ..
@@ -433,7 +434,7 @@ steps:
433434
CMAKE_FLAGS: -DSIMDJSON_SANITIZE=ON
434435
commands:
435436
- apt-get update -qq
436-
- apt-get install -y clang make cmake
437+
- apt-get install -y clang make cmake git
437438
- $CC --version
438439
- mkdir build && cd build
439440
- cmake $CMAKE_FLAGS ..
@@ -480,7 +481,7 @@ steps:
480481
CMAKE_FLAGS: -DSIMDJSON_SANITIZE=ON
481482
commands:
482483
- apt-get update -y
483-
- apt-get install -y make $CC g++ cmake
484+
- apt-get install -y make $CC g++ cmake git
484485
- $CC --version
485486
- mkdir build && cd build
486487
- cmake $CMAKE_FLAGS ..
@@ -527,7 +528,7 @@ steps:
527528
CMAKE_FLAGS: -DSIMDJSON_SANITIZE=ON -DSIMDJSON_IMPLEMENTATION_HASWELL=OFF
528529
commands:
529530
- apt-get update -qq
530-
- apt-get install -y clang make cmake
531+
- apt-get install -y clang make cmake git
531532
- $CC --version
532533
- mkdir build && cd build
533534
- cmake $CMAKE_FLAGS ..

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ set(PROJECT_VERSION_PATCH 1)
3131
set(SIMDJSON_LIB_VERSION "0.3.1" CACHE STRING "simdjson library version")
3232
set(SIMDJSON_LIB_SOVERSION "1" CACHE STRING "simdjson library soversion")
3333

34+
option(SIMDJSON_COMPETITION "Compile competitive benchmarks" ON)
3435
option(SIMDJSON_IMPLEMENTATION_HASWELL "Include the haswell implementation" ON)
3536
option(SIMDJSON_IMPLEMENTATION_WESTMERE "Include the westmere implementation" ON)
3637
option(SIMDJSON_IMPLEMENTATION_ARM64 "Include the arm64 implementation" ON)

benchmark/CMakeLists.txt

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,23 @@ target_compile_definitions(parse_nonumberparsing PRIVATE SIMDJSON_SKIPNUMBERPARS
1414
add_executable(parse_nostringparsing parse.cpp)
1515
target_compile_definitions(parse_nostringparsing PRIVATE SIMDJSON_SKIPSTRINGPARSING)
1616

17-
# Google Benchmarks
1817
if (SIMDJSON_GOOGLE_BENCHMARKS)
1918
link_libraries(benchmark::benchmark)
2019
add_executable(bench_parse_call bench_parse_call.cpp)
2120
add_executable(bench_dom_api bench_dom_api.cpp)
2221
target_link_libraries(bench_dom_api test-data)
2322
endif()
2423

25-
add_executable(distinctuseridcompetition distinctuseridcompetition.cpp)
26-
target_link_libraries(distinctuseridcompetition competition-core)
27-
add_executable(minifiercompetition minifiercompetition.cpp)
28-
target_link_libraries(minifiercompetition competition-core)
29-
add_executable(parseandstatcompetition parseandstatcompetition.cpp)
30-
target_link_libraries(parseandstatcompetition competition-core)
31-
add_executable(parsingcompetition parsingcompetition.cpp)
32-
target_link_libraries(parsingcompetition competition-core)
33-
add_executable(allparsingcompetition parsingcompetition.cpp)
34-
target_link_libraries(allparsingcompetition competition-all)
35-
target_compile_definitions(allparsingcompetition PRIVATE ALLPARSER)
24+
if (SIMDJSON_COMPETITION)
25+
add_executable(distinctuseridcompetition distinctuseridcompetition.cpp)
26+
target_link_libraries(distinctuseridcompetition competition-core)
27+
add_executable(minifiercompetition minifiercompetition.cpp)
28+
target_link_libraries(minifiercompetition competition-core)
29+
add_executable(parseandstatcompetition parseandstatcompetition.cpp)
30+
target_link_libraries(parseandstatcompetition competition-core)
31+
add_executable(parsingcompetition parsingcompetition.cpp)
32+
target_link_libraries(parsingcompetition competition-core)
33+
add_executable(allparsingcompetition parsingcompetition.cpp)
34+
target_link_libraries(allparsingcompetition competition-all)
35+
target_compile_definitions(allparsingcompetition PRIVATE ALLPARSER)
36+
endif()

dependencies/CMakeLists.txt

Lines changed: 45 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,70 @@
1-
# Init submodules so they can be used
2-
find_package(Git QUIET)
3-
if(GIT_FOUND)
4-
option(SIMDJSON_GIT_SUBMODULE "Check submodules during build" ON)
5-
if(SIMDJSON_GIT_SUBMODULE)
6-
message(STATUS "Updating submodules")
7-
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
1+
# Initializes a git submodule if it hasn't been initialized before
2+
# Does NOT attempt to update or otherwise modify git submodules that are already initialized.
3+
function(initialize_submodule DIRECTORY)
4+
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${DIRECTORY}/.git)
5+
find_package(Git QUIET REQUIRED)
6+
message(STATUS "${CMAKE_CURRENT_SOURCE_DIR}/${DIRECTORY}/.git does not exist. Initializing ${DIRECTORY} submodule ...")
7+
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init ${DIRECTORY}
88
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
99
RESULT_VARIABLE GIT_EXIT_CODE)
1010
if(NOT GIT_EXIT_CODE EQUAL "0")
11-
message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
11+
message(FATAL_ERROR "${GIT_EXECUTABLE} submodule update --init dependencies/${DIRECTORY} failed with exit code ${GIT_EXIT_CODE}, please checkout submodules")
1212
endif()
1313
endif()
14-
endif()
14+
endfunction(initialize_submodule)
1515

1616
if (SIMDJSON_GOOGLE_BENCHMARKS)
1717
option(BENCHMARK_ENABLE_TESTING OFF)
1818
set(BENCHMARK_ENABLE_TESTING OFF)
1919
option(BENCHMARK_ENABLE_INSTALL OFF)
2020
set(BENCHMARK_ENABLE_INSTALL OFF)
21+
initialize_submodule(benchmark)
2122
add_subdirectory(benchmark)
2223
endif()
2324

24-
add_library(competition-cJSON INTERFACE)
25-
target_include_directories(competition-cJSON INTERFACE cJSON)
25+
if (SIMDJSON_COMPETITION)
26+
initialize_submodule(cJSON)
27+
add_library(competition-cJSON INTERFACE)
28+
target_include_directories(competition-cJSON INTERFACE cJSON)
2629

27-
add_library(competition-fastjson INTERFACE)
28-
target_include_directories(competition-fastjson INTERFACE fastjson/src fastjson/include)
30+
initialize_submodule(fastjson)
31+
add_library(competition-fastjson INTERFACE)
32+
target_include_directories(competition-fastjson INTERFACE fastjson/src fastjson/include)
2933

30-
add_library(competition-gason INTERFACE)
31-
target_include_directories(competition-gason INTERFACE gason/src)
34+
initialize_submodule(gason)
35+
add_library(competition-gason INTERFACE)
36+
target_include_directories(competition-gason INTERFACE gason/src)
3237

33-
add_library(competition-jsmn INTERFACE)
34-
target_include_directories(competition-jsmn INTERFACE jsmn)
38+
initialize_submodule(jsmn)
39+
add_library(competition-jsmn INTERFACE)
40+
target_include_directories(competition-jsmn INTERFACE jsmn)
3541

36-
add_library(competition-json INTERFACE)
37-
target_include_directories(competition-json INTERFACE json/single_include)
42+
initialize_submodule(json)
43+
add_library(competition-json INTERFACE)
44+
target_include_directories(competition-json INTERFACE json/single_include)
3845

39-
add_library(competition-json11 INTERFACE)
40-
target_include_directories(competition-json11 INTERFACE json11)
46+
initialize_submodule(json11)
47+
add_library(competition-json11 INTERFACE)
48+
target_include_directories(competition-json11 INTERFACE json11)
4149

42-
add_library(competition-jsoncppdist INTERFACE)
43-
target_include_directories(competition-jsoncppdist INTERFACE jsoncppdist)
50+
add_library(competition-jsoncppdist INTERFACE)
51+
target_include_directories(competition-jsoncppdist INTERFACE jsoncppdist)
4452

45-
add_library(competition-rapidjson INTERFACE)
46-
target_include_directories(competition-rapidjson INTERFACE rapidjson/include)
53+
initialize_submodule(rapidjson)
54+
add_library(competition-rapidjson INTERFACE)
55+
target_include_directories(competition-rapidjson INTERFACE rapidjson/include)
4756

48-
add_library(competition-sajson INTERFACE)
49-
target_include_directories(competition-sajson INTERFACE sajson/include)
57+
initialize_submodule(sajson)
58+
add_library(competition-sajson INTERFACE)
59+
target_include_directories(competition-sajson INTERFACE sajson/include)
5060

51-
add_library(competition-ujson4c ujson4c/src/ujdecode.c)
52-
target_include_directories(competition-ujson4c PUBLIC ujson4c/3rdparty ujson4c/src)
61+
initialize_submodule(ujson4c)
62+
add_library(competition-ujson4c ujson4c/src/ujdecode.c)
63+
target_include_directories(competition-ujson4c PUBLIC ujson4c/3rdparty ujson4c/src)
5364

54-
add_library(competition-core INTERFACE)
55-
target_link_libraries(competition-core INTERFACE competition-json competition-rapidjson competition-sajson competition-cJSON competition-jsmn)
65+
add_library(competition-core INTERFACE)
66+
target_link_libraries(competition-core INTERFACE competition-json competition-rapidjson competition-sajson competition-cJSON competition-jsmn)
5667

57-
add_library(competition-all INTERFACE)
58-
target_link_libraries(competition-all INTERFACE competition-core competition-jsoncppdist competition-json11 competition-fastjson competition-gason competition-ujson4c)
68+
add_library(competition-all INTERFACE)
69+
target_link_libraries(competition-all INTERFACE competition-core competition-jsoncppdist competition-json11 competition-fastjson competition-gason competition-ujson4c)
70+
endif()

scripts/CMakeLists.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
add_test(
2-
NAME issue150
3-
COMMAND ${PROJECT_SOURCE_DIR}/scripts/issue150.sh
4-
WORKING_DIRECTORY $<TARGET_FILE_DIR:allparserscheckfile>
5-
)
1+
if (SIMDJSON_COMPETITION)
2+
add_test(
3+
NAME issue150
4+
COMMAND ${PROJECT_SOURCE_DIR}/scripts/issue150.sh
5+
WORKING_DIRECTORY $<TARGET_FILE_DIR:allparserscheckfile>
6+
)
7+
endif()

tests/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@ add_cpp_test(pointercheck pointercheck.cpp)
3232
#
3333
# Competition parse test
3434
#
35-
add_executable(allparserscheckfile allparserscheckfile.cpp)
36-
target_link_libraries(allparserscheckfile competition-all)
35+
if (SIMDJSON_COMPETITION)
36+
add_executable(allparserscheckfile allparserscheckfile.cpp)
37+
target_link_libraries(allparserscheckfile competition-all)
38+
endif()
3739

3840
#
3941
# Compile-only tests

0 commit comments

Comments
 (0)