11# 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 ${CMAKE_CURRENT_SOURCE_DIR } /${DIRECTORY}
8- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR }
9- RESULT_VARIABLE GIT_EXIT_CODE )
10- if (NOT GIT_EXIT_CODE EQUAL "0" )
11- message (FATAL_ERROR "${GIT_EXECUTABLE} submodule update --init dependencies/${DIRECTORY} failed with exit code ${GIT_EXIT_CODE} , please checkout submodules" )
2+
3+
4+ find_package (Git QUIET ) # We want the library to build even if git is missing
5+ if (Git_FOUND)
6+ # Does NOT attempt to update or otherwise modify git submodules that are already initialized.
7+ function (initialize_submodule DIRECTORY )
8+ if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR } /${DIRECTORY} /.git)
9+ message (STATUS "${CMAKE_CURRENT_SOURCE_DIR } /${DIRECTORY} /.git does not exist. Initializing ${DIRECTORY} submodule ..." )
10+ execute_process (COMMAND ${GIT_EXECUTABLE} submodule update --init ${CMAKE_CURRENT_SOURCE_DIR } /${DIRECTORY}
11+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR }
12+ RESULT_VARIABLE GIT_EXIT_CODE )
13+ if (NOT GIT_EXIT_CODE EQUAL "0" )
14+ message (FATAL_ERROR "${GIT_EXECUTABLE} submodule update --init dependencies/${DIRECTORY} failed with exit code ${GIT_EXIT_CODE} , please checkout submodules" )
15+ endif ()
1216 endif ()
17+ endfunction (initialize_submodule )
18+
19+ if (SIMDJSON_GOOGLE_BENCHMARKS)
20+ option (BENCHMARK_ENABLE_TESTING OFF )
21+ set (BENCHMARK_ENABLE_TESTING OFF )
22+ option (BENCHMARK_ENABLE_INSTALL OFF )
23+ set (BENCHMARK_ENABLE_INSTALL OFF )
24+ initialize_submodule (benchmark )
25+ add_subdirectory (benchmark )
26+ endif ()
27+
28+ if (SIMDJSON_COMPETITION)
29+ initialize_submodule (cJSON )
30+ add_library (competition-cJSON INTERFACE )
31+ target_include_directories (competition-cJSON INTERFACE cJSON )
32+
33+ initialize_submodule (fastjson )
34+ add_library (competition-fastjson INTERFACE )
35+ target_include_directories (competition-fastjson INTERFACE fastjson/src fastjson/include )
36+
37+ initialize_submodule (gason )
38+ add_library (competition-gason INTERFACE )
39+ target_include_directories (competition-gason INTERFACE gason/src )
40+
41+ initialize_submodule (jsmn )
42+ add_library (competition-jsmn INTERFACE )
43+ target_include_directories (competition-jsmn INTERFACE jsmn )
44+
45+ initialize_submodule (json )
46+ add_library (competition-json INTERFACE )
47+ target_include_directories (competition-json INTERFACE json/single_include )
48+
49+ initialize_submodule (json11 )
50+ add_library (competition-json11 INTERFACE )
51+ target_include_directories (competition-json11 INTERFACE json11 )
52+
53+ add_library (competition-jsoncppdist INTERFACE )
54+ target_include_directories (competition-jsoncppdist INTERFACE jsoncppdist )
55+
56+ initialize_submodule (rapidjson )
57+ add_library (competition-rapidjson INTERFACE )
58+ target_include_directories (competition-rapidjson INTERFACE rapidjson/include )
59+
60+ initialize_submodule (sajson )
61+ add_library (competition-sajson INTERFACE )
62+ target_include_directories (competition-sajson INTERFACE sajson/include )
63+
64+ initialize_submodule (ujson4c )
65+ add_library (competition-ujson4c ujson4c/src/ujdecode.c )
66+ target_include_directories (competition-ujson4c PUBLIC ujson4c/3rdparty ujson4c/src )
67+
68+ add_library (competition-core INTERFACE )
69+ target_link_libraries (competition-core INTERFACE competition-json competition-rapidjson competition-sajson competition-cJSON competition-jsmn )
70+
71+ add_library (competition-all INTERFACE )
72+ target_link_libraries (competition-all INTERFACE competition-core competition-jsoncppdist competition-json11 competition-fastjson competition-gason competition-ujson4c )
1373 endif ()
14- endfunction (initialize_submodule )
15-
16- if (SIMDJSON_GOOGLE_BENCHMARKS)
17- option (BENCHMARK_ENABLE_TESTING OFF )
18- set (BENCHMARK_ENABLE_TESTING OFF )
19- option (BENCHMARK_ENABLE_INSTALL OFF )
20- set (BENCHMARK_ENABLE_INSTALL OFF )
21- initialize_submodule (benchmark )
22- add_subdirectory (benchmark )
23- endif ()
24-
25- if (SIMDJSON_COMPETITION)
26- initialize_submodule (cJSON )
27- add_library (competition-cJSON INTERFACE )
28- target_include_directories (competition-cJSON INTERFACE cJSON )
29-
30- initialize_submodule (fastjson )
31- add_library (competition-fastjson INTERFACE )
32- target_include_directories (competition-fastjson INTERFACE fastjson/src fastjson/include )
33-
34- initialize_submodule (gason )
35- add_library (competition-gason INTERFACE )
36- target_include_directories (competition-gason INTERFACE gason/src )
37-
38- initialize_submodule (jsmn )
39- add_library (competition-jsmn INTERFACE )
40- target_include_directories (competition-jsmn INTERFACE jsmn )
41-
42- initialize_submodule (json )
43- add_library (competition-json INTERFACE )
44- target_include_directories (competition-json INTERFACE json/single_include )
45-
46- initialize_submodule (json11 )
47- add_library (competition-json11 INTERFACE )
48- target_include_directories (competition-json11 INTERFACE json11 )
49-
50- add_library (competition-jsoncppdist INTERFACE )
51- target_include_directories (competition-jsoncppdist INTERFACE jsoncppdist )
52-
53- initialize_submodule (rapidjson )
54- add_library (competition-rapidjson INTERFACE )
55- target_include_directories (competition-rapidjson INTERFACE rapidjson/include )
56-
57- initialize_submodule (sajson )
58- add_library (competition-sajson INTERFACE )
59- target_include_directories (competition-sajson INTERFACE sajson/include )
60-
61- initialize_submodule (ujson4c )
62- add_library (competition-ujson4c ujson4c/src/ujdecode.c )
63- target_include_directories (competition-ujson4c PUBLIC ujson4c/3rdparty ujson4c/src )
64-
65- add_library (competition-core INTERFACE )
66- target_link_libraries (competition-core INTERFACE competition-json competition-rapidjson competition-sajson competition-cJSON competition-jsmn )
67-
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 ()
71-
72- initialize_submodule (cxxopts )
73- add_library (cxxopts INTERFACE )
74- target_include_directories (cxxopts INTERFACE cxxopts/include )
74+
75+ initialize_submodule (cxxopts )
76+ add_library (cxxopts INTERFACE )
77+ target_include_directories (cxxopts INTERFACE cxxopts/include )
78+
79+ endif ()
0 commit comments