Skip to content

Commit c9a6532

Browse files
committed
[cmake] Add support for generating targets for a -Onone sib stdlib and a -O sib stdlib, but do not build them by default.
This is useful for engineers who do not want to reconfigure to look at a -Onone/-O sib stdlib.
1 parent 2302f59 commit c9a6532

File tree

3 files changed

+52
-10
lines changed

3 files changed

+52
-10
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,7 @@ function(_add_swift_library_single target name)
721721
swift_object_dependency_target
722722
swift_module_dependency_target
723723
swift_sib_dependency_target
724+
swift_sibopt_dependency_target
724725
swift_sibgen_dependency_target
725726
SWIFTLIB_SINGLE_SOURCES
726727
SWIFTLIB_SINGLE_EXTERNAL_SOURCES ${name}
@@ -755,6 +756,11 @@ function(_add_swift_library_single target name)
755756
${swift_sib_dependency_target})
756757
endif()
757758

759+
if (swift_sibopt_dependency_target)
760+
add_dependencies(swift-stdlib${VARIANT_SUFFIX}-sibopt
761+
${swift_sibopt_dependency_target})
762+
endif()
763+
758764
if (swift_sibgen_dependency_target)
759765
add_dependencies(swift-stdlib${VARIANT_SUFFIX}-sibgen
760766
${swift_sibgen_dependency_target})
@@ -1852,6 +1858,7 @@ function(_add_swift_executable_single name)
18521858
dependency_target
18531859
unused_module_dependency_target
18541860
unused_sib_dependency_target
1861+
unusged_sibopt_dependency_target
18551862
unused_sibgen_dependency_target
18561863
SWIFTEXE_SINGLE_SOURCES SWIFTEXE_SINGLE_EXTERNAL_SOURCES ${name}
18571864
DEPENDS

cmake/modules/SwiftSource.cmake

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ function(handle_swift_sources
99
dependency_target_out_var_name
1010
dependency_module_target_out_var_name
1111
dependency_sib_target_out_var_name
12+
dependency_sibopt_target_out_var_name
1213
dependency_sibgen_target_out_var_name
1314
sourcesvar externalvar name)
1415
cmake_parse_arguments(SWIFTSOURCES
@@ -46,6 +47,7 @@ function(handle_swift_sources
4647
set("${dependency_target_out_var_name}" "" PARENT_SCOPE)
4748
set("${dependency_module_target_out_var_name}" "" PARENT_SCOPE)
4849
set("${dependency_sib_target_out_var_name}" "" PARENT_SCOPE)
50+
set("${dependency_sibopt_target_out_var_name}" "" PARENT_SCOPE)
4951
set("${dependency_sibgen_target_out_var_name}" "" PARENT_SCOPE)
5052

5153
set(result)
@@ -89,6 +91,7 @@ function(handle_swift_sources
8991
dependency_target
9092
module_dependency_target
9193
sib_dependency_target
94+
sibopt_dependency_target
9295
sibgen_dependency_target
9396
OUTPUT ${swift_obj}
9497
SOURCES ${swift_sources}
@@ -108,6 +111,7 @@ function(handle_swift_sources
108111
set("${dependency_target_out_var_name}" "${dependency_target}" PARENT_SCOPE)
109112
set("${dependency_module_target_out_var_name}" "${module_dependency_target}" PARENT_SCOPE)
110113
set("${dependency_sib_target_out_var_name}" "${sib_dependency_target}" PARENT_SCOPE)
114+
set("${dependency_sibopt_target_out_var_name}" "${sibopt_dependency_target}" PARENT_SCOPE)
111115
set("${dependency_sibgen_target_out_var_name}" "${sibgen_dependency_target}" PARENT_SCOPE)
112116

113117
list(APPEND result ${swift_obj})
@@ -137,8 +141,9 @@ endfunction()
137141
# _compile_swift_files(
138142
# dependency_target_out_var_name
139143
# dependency_module_target_out_var_name
140-
# dependency_sib_target_out_var_name
141-
# dependency_sibgen_target_out_var_name
144+
# dependency_sib_target_out_var_name # -Onone sib target
145+
# dependency_sibopt_target_out_var_name # -O sib target
146+
# dependency_sibgen_target_out_var_name # -sibgen target
142147
# OUTPUT objfile # Name of the resulting object file
143148
# SOURCES swift_src [swift_src...] # Swift source files to compile
144149
# FLAGS -module-name foo # Flags to add to the compilation
@@ -158,7 +163,8 @@ endfunction()
158163
# )
159164
function(_compile_swift_files
160165
dependency_target_out_var_name dependency_module_target_out_var_name
161-
dependency_sib_target_out_var_name dependency_sibgen_target_out_var_name)
166+
dependency_sib_target_out_var_name dependency_sibopt_target_out_var_name
167+
dependency_sibgen_target_out_var_name)
162168
cmake_parse_arguments(SWIFTFILE
163169
"IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE"
164170
"OUTPUT;MODULE_NAME;INSTALL_IN_COMPONENT"
@@ -312,7 +318,8 @@ function(_compile_swift_files
312318

313319
set(module_base "${module_dir}/${SWIFTFILE_MODULE_NAME}")
314320
set(module_file "${module_base}.swiftmodule")
315-
set(sib_file "${module_base}.sib")
321+
set(sib_file "${module_base}.Onone.sib")
322+
set(sibopt_file "${module_base}.O.sib")
316323
set(sibgen_file "${module_base}.sibgen")
317324
set(module_doc_file "${module_base}.swiftdoc")
318325

@@ -387,6 +394,7 @@ function(_compile_swift_files
387394
set(apinotes_outputs ${apinote_files})
388395
set(module_outputs "${module_file}" "${module_doc_file}")
389396
set(sib_outputs "${sib_file}")
397+
set(sibopt_outputs "${sibopt_file}")
390398
set(sibgen_outputs "${sibgen_file}")
391399

392400
if(XCODE)
@@ -410,6 +418,8 @@ function(_compile_swift_files
410418
COMMAND "${CMAKE_COMMAND}" -E touch ${module_outputs})
411419
set(command_touch_sib_outputs
412420
COMMAND "${CMAKE_COMMAND}" -E touch ${sib_outputs})
421+
set(command_touch_sibopt_outputs
422+
COMMAND "${CMAKE_COMMAND}" -E touch ${sibopt_outputs})
413423
set(command_touch_sibgen_outputs
414424
COMMAND "${CMAKE_COMMAND}" -E touch ${sibgen_outputs})
415425
endif()
@@ -461,10 +471,11 @@ function(_compile_swift_files
461471
#
462472
# 1. *.swiftmodule
463473
# 2. *.swiftdoc
464-
# 3. *.sib
465-
# 4. *.sibgen
474+
# 3. *.Onone.sib
475+
# 4. *.O.sib
476+
# 5. *.sibgen
466477
#
467-
# Only 1,2 are built by default. 3,4 are utility targets for use by engineers
478+
# Only 1,2 are built by default. 3,4,5 are utility targets for use by engineers
468479
# and thus even though the targets are generated, the targets are not built by
469480
# default.
470481
#
@@ -492,7 +503,7 @@ function(_compile_swift_files
492503
sib_dependency_target
493504
COMMAND
494505
"${line_directive_tool}" "${source_files}" --
495-
"${swift_compiler_tool}" "-emit-sib" "-o" "${sib_file}" ${swift_flags}
506+
"${swift_compiler_tool}" "-emit-sib" "-o" "${sib_file}" ${swift_flags} -Onone
496507
"${source_files}"
497508
${command_touch_sib_outputs}
498509
OUTPUT ${sib_outputs}
@@ -504,6 +515,22 @@ function(_compile_swift_files
504515
EXCLUDE_FROM_ALL)
505516
set("${dependency_sib_target_out_var_name}" "${sib_dependency_target}" PARENT_SCOPE)
506517

518+
add_custom_command_target(
519+
sibopt_dependency_target
520+
COMMAND
521+
"${line_directive_tool}" "${source_files}" --
522+
"${swift_compiler_tool}" "-emit-sib" "-o" "${sibopt_file}" ${swift_flags} -O
523+
"${source_files}"
524+
${command_touch_sibopt_outputs}
525+
OUTPUT ${sibopt_outputs}
526+
DEPENDS
527+
${swift_compiler_tool_dep}
528+
${source_files} ${SWIFTFILE_DEPENDS}
529+
${obj_dirs_dependency_target}
530+
COMMENT "Generating ${sibopt_file}"
531+
EXCLUDE_FROM_ALL)
532+
set("${dependency_sibopt_target_out_var_name}" "${sibopt_dependency_target}" PARENT_SCOPE)
533+
507534
# This is the target to generate the .sibgen files. It is not built by default.
508535
add_custom_command_target(
509536
sibgen_dependency_target

stdlib/CMakeLists.txt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,33 @@ endif()
3838

3939
add_custom_target(swift-stdlib-all)
4040
add_custom_target(swift-stdlib-sib-all)
41+
add_custom_target(swift-stdlib-sibopt-all)
4142
add_custom_target(swift-stdlib-sibgen-all)
4243
foreach(SDK ${SWIFT_SDKS})
4344
add_custom_target("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}")
4445
add_custom_target("swift-test-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}")
4546
add_custom_target("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sib")
47+
add_custom_target("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sibopt")
4648
add_custom_target("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sibgen")
4749
foreach(ARCH ${SWIFT_SDK_${SDK}_ARCHITECTURES})
4850
set(VARIANT_SUFFIX "-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-${ARCH}")
4951
add_custom_target("swift-stdlib${VARIANT_SUFFIX}")
5052
add_custom_target("swift-stdlib${VARIANT_SUFFIX}-sib")
53+
add_custom_target("swift-stdlib${VARIANT_SUFFIX}-sibopt")
5154
add_custom_target("swift-stdlib${VARIANT_SUFFIX}-sibgen")
5255
add_custom_target("swift-test-stdlib${VARIANT_SUFFIX}")
5356

5457
add_dependencies(swift-stdlib-all "swift-stdlib${VARIANT_SUFFIX}")
5558
add_dependencies(swift-stdlib-sib-all "swift-stdlib${VARIANT_SUFFIX}-sib")
59+
add_dependencies(swift-stdlib-sibopt-all "swift-stdlib${VARIANT_SUFFIX}-sibopt")
5660
add_dependencies(swift-stdlib-sibgen-all "swift-stdlib${VARIANT_SUFFIX}-sibgen")
5761

5862
add_dependencies("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}"
5963
"swift-stdlib${VARIANT_SUFFIX}")
6064
add_dependencies("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sib"
61-
"swift-stdlib${VARIANT_SUFFIX}-sib")
65+
"swift-stdlib${VARIANT_SUFFIX}-sib")
66+
add_dependencies("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sibopt"
67+
"swift-stdlib${VARIANT_SUFFIX}-sibopt")
6268
add_dependencies("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sibgen"
6369
"swift-stdlib${VARIANT_SUFFIX}-sibgen")
6470

@@ -69,7 +75,9 @@ endforeach()
6975
add_custom_target(swift-stdlib
7076
DEPENDS "swift-stdlib${SWIFT_PRIMARY_VARIANT_SUFFIX}")
7177
add_custom_target(swift-stdlib-sib
72-
DEPENDS "swift-stdlib${SWIFT_PRIMARY_VARIANT_SUFFIX}-sib")
78+
DEPENDS "swift-stdlib${SWIFT_PRIMARY_VARIANT_SUFFIX}-sib")
79+
add_custom_target(swift-stdlib-sibopt
80+
DEPENDS "swift-stdlib${SWIFT_PRIMARY_VARIANT_SUFFIX}-sibopt")
7381
add_custom_target(swift-stdlib-sibgen
7482
DEPENDS "swift-stdlib${SWIFT_PRIMARY_VARIANT_SUFFIX}-sibgen")
7583
add_custom_target(swift-test-stdlib ALL

0 commit comments

Comments
 (0)