@@ -20,6 +20,57 @@ function(runcmd)
20
20
set (${RUNCMD_VARIABLE} ${${RUNCMD_VARIABLE}} PARENT_SCOPE )
21
21
endfunction (runcmd )
22
22
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
+
23
74
function (swift_benchmark_compile_archopts )
24
75
cmake_parse_arguments (BENCH_COMPILE_ARCHOPTS "" "PLATFORM;ARCH;OPT" "" ${ARGN} )
25
76
set (sdk ${${BENCH_COMPILE_ARCHOPTS_PLATFORM}_sdk} )
@@ -67,45 +118,26 @@ function (swift_benchmark_compile_archopts)
67
118
set (bench_library_objects )
68
119
set (bench_library_sibfiles )
69
120
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" )
71
122
123
+ get_filename_component (module_name "${module_name_path} " NAME )
72
124
if ("${module_name} " STREQUAL "DriverUtils" )
73
- set ( extra_sources "${srcdir} /utils/ArgParse.swift" )
125
+ list ( APPEND sources "${srcdir} /utils/ArgParse.swift" )
74
126
endif ()
75
127
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} " )
109
141
endif ()
110
142
endforeach ()
111
143
0 commit comments