Skip to content

Commit 9175f62

Browse files
authored
Merge pull request swiftlang#12027 from gottesmm/pr-5e3414872b9fe2cb8575e939b41fbf8524fda0db
Refactor out the creation of the benchmark libraries into a helper routine swift_benchmark_library. Initially just use it for DriverUtils.
2 parents d3fab7f + ac53973 commit 9175f62

File tree

1 file changed

+67
-35
lines changed

1 file changed

+67
-35
lines changed

benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake

Lines changed: 67 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,57 @@ function(runcmd)
2020
set(${RUNCMD_VARIABLE} ${${RUNCMD_VARIABLE}} PARENT_SCOPE)
2121
endfunction(runcmd)
2222

23+
function (swift_benchmark_library objfile_out sibfile_out)
24+
cmake_parse_arguments(BENCHLIB "" "MODULE_PATH;SOURCE_DIR;OBJECT_DIR" "SOURCES;LIBRARY_FLAGS" ${ARGN})
25+
26+
precondition(BENCHLIB_MODULE_PATH)
27+
precondition(BENCHLIB_SOURCE_DIR)
28+
precondition(BENCHLIB_OBJECT_DIR)
29+
precondition(BENCHLIB_SOURCES)
30+
31+
set(module_name_path "${BENCHLIB_MODULE_PATH}")
32+
get_filename_component(module_name "${module_name_path}" NAME)
33+
set(srcdir "${BENCHLIB_SOURCE_DIR}")
34+
set(objdir "${BENCHLIB_OBJECT_DIR}")
35+
set(sources "${BENCHLIB_SOURCES}")
36+
37+
set(objfile "${objdir}/${module_name}.o")
38+
set(swiftmodule "${objdir}/${module_name}.swiftmodule")
39+
40+
precondition(objfile_out)
41+
add_custom_command(
42+
OUTPUT "${objfile}"
43+
DEPENDS ${stdlib_dependencies} ${sources}
44+
COMMAND "${SWIFT_EXEC}"
45+
${BENCHLIB_LIBRARY_FLAGS}
46+
"-force-single-frontend-invocation"
47+
"-parse-as-library"
48+
"-module-name" "${module_name}"
49+
"-emit-module" "-emit-module-path" "${swiftmodule}"
50+
"-o" "${objfile}"
51+
${sources})
52+
set(${objfile_out} "${objfile}" PARENT_SCOPE)
53+
54+
if(SWIFT_BENCHMARK_EMIT_SIB)
55+
precondition(sibfile_out)
56+
set(sibfile "${objdir}/${module_name}.sib")
57+
58+
add_custom_command(
59+
OUTPUT "${sibfile}"
60+
DEPENDS
61+
${stdlib_dependencies} ${sources}
62+
COMMAND "${SWIFT_EXEC}"
63+
${BENCHLIB_LIBRARY_FLAGS}
64+
"-force-single-frontend-invocation"
65+
"-parse-as-library"
66+
"-module-name" "${module_name}"
67+
"-emit-sib"
68+
"-o" "${sibfile}"
69+
${sources})
70+
set(sibfile_out "${sibfile}" PARENT_SCOPE)
71+
endif()
72+
endfunction()
73+
2374
function (swift_benchmark_compile_archopts)
2475
cmake_parse_arguments(BENCH_COMPILE_ARCHOPTS "" "PLATFORM;ARCH;OPT" "" ${ARGN})
2576
set(sdk ${${BENCH_COMPILE_ARCHOPTS_PLATFORM}_sdk})
@@ -67,45 +118,26 @@ function (swift_benchmark_compile_archopts)
67118
set(bench_library_objects)
68119
set(bench_library_sibfiles)
69120
foreach(module_name_path ${BENCH_DRIVER_LIBRARY_MODULES})
70-
get_filename_component(module_name "${module_name_path}" NAME)
121+
set(sources "${srcdir}/${module_name_path}.swift")
71122

123+
get_filename_component(module_name "${module_name_path}" NAME)
72124
if("${module_name}" STREQUAL "DriverUtils")
73-
set(extra_sources "${srcdir}/utils/ArgParse.swift")
125+
list(APPEND sources "${srcdir}/utils/ArgParse.swift")
74126
endif()
75127

76-
set(objfile "${objdir}/${module_name}.o")
77-
set(swiftmodule "${objdir}/${module_name}.swiftmodule")
78-
list(APPEND bench_library_objects "${objfile}")
79-
set(source "${srcdir}/${module_name_path}.swift")
80-
add_custom_command(
81-
OUTPUT "${objfile}"
82-
DEPENDS ${stdlib_dependencies} "${source}" ${extra_sources}
83-
COMMAND "${SWIFT_EXEC}"
84-
${common_options_driver}
85-
${BENCH_DRIVER_LIBRARY_FLAGS}
86-
"-force-single-frontend-invocation"
87-
"-parse-as-library"
88-
"-module-name" "${module_name}"
89-
"-emit-module" "-emit-module-path" "${swiftmodule}"
90-
"-o" "${objfile}"
91-
"${source}" ${extra_sources})
92-
if(SWIFT_BENCHMARK_EMIT_SIB)
93-
set(sibfile "${objdir}/${module_name}.sib")
94-
list(APPEND bench_library_sibfiles "${sibfile}")
95-
add_custom_command(
96-
OUTPUT "${sibfile}"
97-
DEPENDS
98-
${stdlib_dependencies} "${srcdir}/${module_name_path}.swift"
99-
${extra_sources}
100-
COMMAND "${SWIFT_EXEC}"
101-
${common_options_driver}
102-
${BENCH_DRIVER_LIBRARY_FLAGS}
103-
"-force-single-frontend-invocation"
104-
"-parse-as-library"
105-
"-module-name" "${module_name}"
106-
"-emit-sib"
107-
"-o" "${sibfile}"
108-
"${source}" ${extra_sources})
128+
set(objfile_out)
129+
set(sibfile_out)
130+
swift_benchmark_library(objfile_out sibfile_out
131+
MODULE_PATH "${module_name_path}"
132+
SOURCE_DIR "${srcdir}"
133+
OBJECT_DIR "${objdir}"
134+
SOURCES ${sources}
135+
LIBRARY_FLAGS ${common_options_driver} ${BENCH_DRIVER_LIBRARY_FLAGS})
136+
precondition(objfile_out)
137+
list(APPEND bench_library_objects "${objfile_out}")
138+
if (SWIFT_BENCHMARK_EMIT_SUB)
139+
precondition(sibfile_out)
140+
list(APPEND bench_library_subfiles "${sibfile_out}")
109141
endif()
110142
endforeach()
111143

0 commit comments

Comments
 (0)