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