@@ -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# )
159164function (_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
0 commit comments