Skip to content

Commit 9700045

Browse files
committed
Improve loader dependencies in CMake, avoid expanding generator expressions which are slow and problematic with cross-compiling.
1 parent 8830fe8 commit 9700045

File tree

10 files changed

+109
-182
lines changed

10 files changed

+109
-182
lines changed

cmake/GeneratorExpressions.cmake

Lines changed: 0 additions & 70 deletions
This file was deleted.

source/CMakeLists.txt

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -111,30 +111,10 @@ add_subdirectory(configuration)
111111
add_subdirectory(loader)
112112
add_subdirectory(metacall)
113113

114-
# Tests
115-
set(IDE_FOLDER "Tests")
116-
add_subdirectory(tests)
117-
118-
# CLIs
119-
set(IDE_FOLDER "CLIs")
120-
add_subdirectory(cli)
121-
122-
# Examples
123-
set(IDE_FOLDER "Examples")
124-
add_subdirectory(examples)
125-
126-
# Benchmarks
127-
set(IDE_FOLDER "Benchmarks")
128-
add_subdirectory(benchmarks)
129-
130114
# Loaders
131115
set(IDE_FOLDER "Loaders")
132116
add_subdirectory(loaders)
133117

134-
# Scripts
135-
set(IDE_FOLDER "Scripts")
136-
add_subdirectory(scripts)
137-
138118
# Serials
139119
set(IDE_FOLDER "Serials")
140120
add_subdirectory(serials)
@@ -147,6 +127,26 @@ add_subdirectory(detours)
147127
set(IDE_FOLDER "Ports")
148128
add_subdirectory(ports)
149129

130+
# Scripts
131+
set(IDE_FOLDER "Scripts")
132+
add_subdirectory(scripts)
133+
134+
# Tests
135+
set(IDE_FOLDER "Tests")
136+
add_subdirectory(tests)
137+
138+
# Benchmarks
139+
set(IDE_FOLDER "Benchmarks")
140+
add_subdirectory(benchmarks)
141+
142+
# CLIs
143+
set(IDE_FOLDER "CLIs")
144+
add_subdirectory(cli)
145+
146+
# Examples
147+
set(IDE_FOLDER "Examples")
148+
add_subdirectory(examples)
149+
150150
#
151151
# Deployment
152152
#

source/cli/metacallcli/CMakeLists.txt

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -185,25 +185,19 @@ add_test(NAME ${target}
185185
# Define dependencies
186186
#
187187

188-
include(GeneratorExpressions)
189-
190-
cmake_expand_generator_expressions(DEPENDENCIES
191-
$<$<BOOL:${OPTION_BUILD_LOADERS_NODE}>:node_loader>
192-
$<$<BOOL:${OPTION_BUILD_LOADERS_PY}>:py_loader>
193-
$<$<BOOL:${OPTION_BUILD_LOADERS_RB}>:rb_loader>
194-
$<$<BOOL:${OPTION_BUILD_LOADERS_CS}>:cs_loader>
195-
$<$<BOOL:${OPTION_BUILD_LOADERS_JSM}>:jsm_loader>
196-
$<$<BOOL:${OPTION_BUILD_LOADERS_JS}>:js_loader>
197-
$<$<BOOL:${OPTION_BUILD_LOADERS_MOCK}>:mock_loader>
198-
$<$<BOOL:${OPTION_BUILD_LOADERS_C}>:c_loader>
199-
$<$<BOOL:${OPTION_BUILD_LOADERS_FILE}>:file_loader>
200-
$<$<BOOL:${OPTION_BUILD_LOADERS_TS}>:ts_loader>
188+
add_loader_dependencies(${target}
189+
node_loader
190+
py_loader
191+
rb_loader
192+
cs_loader
193+
jsm_loader
194+
js_loader
195+
mock_loader
196+
c_loader
197+
file_loader
198+
ts_loader
201199
)
202200

203-
if(DEPENDENCIES)
204-
add_dependencies(${target} ${DEPENDENCIES})
205-
endif()
206-
207201
#
208202
# Define tests
209203
#

source/loaders/CMakeLists.txt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,42 @@ add_subdirectory(rs_loader) # Rust 1.55.0
4646
add_subdirectory(rpc_loader) # cURL Remote Procedure Call
4747
add_subdirectory(ts_loader) # TypeScript 3.9.7
4848
add_subdirectory(wasm_loader) # WebAssembly Virtual Machine
49+
50+
# Optionally enable loader dependencies utility
51+
macro(add_loader_dependencies target)
52+
set(loaders_map_c_loader OPTION_BUILD_LOADERS_C)
53+
set(loaders_map_cob_loader OPTION_BUILD_LOADERS_COB)
54+
set(loaders_map_cr_loader OPTION_BUILD_LOADERS_CR)
55+
set(loaders_map_dart_loader OPTION_BUILD_LOADERS_CS)
56+
set(loaders_map_cs_loader OPTION_BUILD_LOADERS_DART)
57+
set(loaders_map_file_loader OPTION_BUILD_LOADERS_FILE)
58+
set(loaders_map_java_loader OPTION_BUILD_LOADERS_JAVA)
59+
set(loaders_map_jl_loader OPTION_BUILD_LOADERS_JL)
60+
set(loaders_map_jsm_loader OPTION_BUILD_LOADERS_JSM)
61+
set(loaders_map_js_loader OPTION_BUILD_LOADERS_JS)
62+
set(loaders_map_llvm_loader OPTION_BUILD_LOADERS_LLVM)
63+
set(loaders_map_lua_loader OPTION_BUILD_LOADERS_LUA)
64+
set(loaders_map_mock_loader OPTION_BUILD_LOADERS_MOCK)
65+
set(loaders_map_node_loader OPTION_BUILD_LOADERS_NODE)
66+
set(loaders_map_py_loader OPTION_BUILD_LOADERS_PY)
67+
set(loaders_map_rb_loader OPTION_BUILD_LOADERS_RB)
68+
set(loaders_map_rs_loader OPTION_BUILD_LOADERS_RS)
69+
set(loaders_map_rpc_loader OPTION_BUILD_LOADERS_RPC)
70+
set(loaders_map_ts_loader OPTION_BUILD_LOADERS_TS)
71+
set(loaders_map_wasm_loader OPTION_BUILD_LOADERS_WASM)
72+
73+
set(LOADERS_LIST)
74+
75+
foreach(loader ${ARGN})
76+
if(${loaders_map_${loader}})
77+
set(LOADERS_LIST
78+
${LOADERS_LIST}
79+
${loader}
80+
)
81+
endif()
82+
endforeach()
83+
84+
if(LOADERS_LIST)
85+
add_dependencies(${target} ${LOADERS_LIST})
86+
endif()
87+
endmacro()

source/tests/metacall_distributable_test/CMakeLists.txt

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -130,23 +130,17 @@ add_test(NAME ${target}
130130
# Define dependencies
131131
#
132132

133-
include(GeneratorExpressions)
134-
135-
cmake_expand_generator_expressions(DEPENDENCIES
136-
$<$<BOOL:${OPTION_BUILD_LOADERS_NODE}>:node_loader>
137-
$<$<BOOL:${OPTION_BUILD_LOADERS_PY}>:py_loader>
138-
$<$<BOOL:${OPTION_BUILD_LOADERS_RB}>:rb_loader>
139-
$<$<BOOL:${OPTION_BUILD_LOADERS_CS}>:cs_loader>
140-
$<$<BOOL:${OPTION_BUILD_LOADERS_JSM}>:jsm_loader>
141-
$<$<BOOL:${OPTION_BUILD_LOADERS_JS}>:js_loader>
142-
$<$<BOOL:${OPTION_BUILD_LOADERS_MOCK}>:mock_loader>
143-
$<$<BOOL:${OPTION_BUILD_LOADERS_C}>:c_loader>
133+
add_loader_dependencies(${target}
134+
node_loader
135+
py_loader
136+
rb_loader
137+
cs_loader
138+
jsm_loader
139+
js_loader
140+
mock_loader
141+
c_loader
144142
)
145143

146-
if(DEPENDENCIES)
147-
add_dependencies(${target} ${DEPENDENCIES})
148-
endif()
149-
150144
#
151145
# Define test properties
152146
#

source/tests/metacall_ducktype_test/CMakeLists.txt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -122,18 +122,12 @@ add_test(NAME ${target}
122122
# Define dependencies
123123
#
124124

125-
include(GeneratorExpressions)
126-
127-
cmake_expand_generator_expressions(DEPENDENCIES
128-
$<$<BOOL:${OPTION_BUILD_LOADERS_PY}>:py_loader>
129-
$<$<BOOL:${OPTION_BUILD_LOADERS_RB}>:rb_loader>
130-
$<$<BOOL:${OPTION_BUILD_LOADERS_JS}>:js_loader>
125+
add_loader_dependencies(${target}
126+
py_loader
127+
rb_loader
128+
js_loader
131129
)
132130

133-
if(DEPENDENCIES)
134-
add_dependencies(${target} ${DEPENDENCIES})
135-
endif()
136-
137131
#
138132
# Define test properties
139133
#

source/tests/metacall_inspect_test/CMakeLists.txt

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -130,22 +130,16 @@ add_test(NAME ${target}
130130
# Define dependencies
131131
#
132132

133-
include(GeneratorExpressions)
134-
135-
cmake_expand_generator_expressions(DEPENDENCIES
136-
$<$<BOOL:${OPTION_BUILD_LOADERS_PY}>:py_loader>
137-
$<$<BOOL:${OPTION_BUILD_LOADERS_RB}>:rb_loader>
138-
$<$<BOOL:${OPTION_BUILD_LOADERS_CS}>:cs_loader>
139-
$<$<BOOL:${OPTION_BUILD_LOADERS_JSM}>:jsm_loader>
140-
$<$<BOOL:${OPTION_BUILD_LOADERS_JS}>:js_loader>
141-
$<$<BOOL:${OPTION_BUILD_LOADERS_MOCK}>:mock_loader>
142-
$<$<BOOL:${OPTION_BUILD_LOADERS_C}>:c_loader>
133+
add_loader_dependencies(${target}
134+
py_loader
135+
rb_loader
136+
cs_loader
137+
jsm_loader
138+
js_loader
139+
mock_loader
140+
c_loader
143141
)
144142

145-
if(DEPENDENCIES)
146-
add_dependencies(${target} ${DEPENDENCIES})
147-
endif()
148-
149143
#
150144
# Define test properties
151145
#

source/tests/metacall_load_configuration_test/CMakeLists.txt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -122,18 +122,12 @@ add_test(NAME ${target}
122122
# Define dependencies
123123
#
124124

125-
include(GeneratorExpressions)
126-
127-
cmake_expand_generator_expressions(DEPENDENCIES
128-
$<$<BOOL:${OPTION_BUILD_LOADERS_NODE}>:node_loader>
129-
$<$<BOOL:${OPTION_BUILD_LOADERS_PY}>:py_loader>
130-
$<$<BOOL:${OPTION_BUILD_LOADERS_RB}>:rb_loader>
125+
add_loader_dependencies(${target}
126+
node_loader
127+
py_loader
128+
rb_loader
131129
)
132130

133-
if(DEPENDENCIES)
134-
add_dependencies(${target} ${DEPENDENCIES})
135-
endif()
136-
137131
#
138132
# Configure test data
139133
#

source/tests/metacall_load_memory_test/CMakeLists.txt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -122,18 +122,12 @@ add_test(NAME ${target}
122122
# Define dependencies
123123
#
124124

125-
include(GeneratorExpressions)
126-
127-
cmake_expand_generator_expressions(DEPENDENCIES
128-
$<$<BOOL:${OPTION_BUILD_LOADERS_PY}>:py_loader>
129-
$<$<BOOL:${OPTION_BUILD_LOADERS_RB}>:rb_loader>
130-
$<$<BOOL:${OPTION_BUILD_LOADERS_JS}>:js_loader>
125+
add_loader_dependencies(${target}
126+
py_loader
127+
rb_loader
128+
js_loader
131129
)
132130

133-
if(DEPENDENCIES)
134-
add_dependencies(${target} ${DEPENDENCIES})
135-
endif()
136-
137131
#
138132
# Define test properties
139133
#

source/tests/metacall_test/CMakeLists.txt

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -122,24 +122,18 @@ add_test(NAME ${target}
122122
# Define dependencies
123123
#
124124

125-
include(GeneratorExpressions)
126-
127-
cmake_expand_generator_expressions(DEPENDENCIES
128-
$<$<BOOL:${OPTION_BUILD_LOADERS_NODE}>:node_loader>
129-
$<$<BOOL:${OPTION_BUILD_LOADERS_PY}>:py_loader>
130-
$<$<BOOL:${OPTION_BUILD_LOADERS_RB}>:rb_loader>
131-
$<$<BOOL:${OPTION_BUILD_LOADERS_CS}>:cs_loader>
132-
$<$<BOOL:${OPTION_BUILD_LOADERS_JSM}>:jsm_loader>
133-
$<$<BOOL:${OPTION_BUILD_LOADERS_JS}>:js_loader>
134-
$<$<BOOL:${OPTION_BUILD_LOADERS_MOCK}>:mock_loader>
135-
$<$<BOOL:${OPTION_BUILD_LOADERS_C}>:c_loader>
136-
$<$<BOOL:${OPTION_BUILD_LOADERS_FILE}>:file_loader>
125+
add_loader_dependencies(${target}
126+
node_loader
127+
py_loader
128+
rb_loader
129+
cs_loader
130+
jsm_loader
131+
js_loader
132+
mock_loader
133+
c_loader
134+
file_loader
137135
)
138136

139-
if(DEPENDENCIES)
140-
add_dependencies(${target} ${DEPENDENCIES})
141-
endif()
142-
143137
#
144138
# Define test properties
145139
#

0 commit comments

Comments
 (0)