@@ -49,7 +49,7 @@ function(handle_swift_sources
4949 dependency_sibgen_target_out_var_name
5050 sourcesvar externalvar name )
5151 cmake_parse_arguments (SWIFTSOURCES
52- "IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;NO_LINK_NAME;IS_FRAGILE;ONLY_SWIFTMODULE"
52+ "IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;NO_LINK_NAME;IS_FRAGILE;ONLY_SWIFTMODULE;NO_SWIFTMODULE "
5353 "SDK;ARCHITECTURE;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;DEPLOYMENT_VERSION_IOS;DEPLOYMENT_VERSION_TVOS;DEPLOYMENT_VERSION_WATCHOS;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING;INSTALL_BINARY_SWIFTMODULE"
5454 "DEPENDS;COMPILE_FLAGS;MODULE_NAME;MODULE_DIR;ENABLE_LTO"
5555 ${ARGN} )
@@ -66,6 +66,7 @@ function(handle_swift_sources
6666 translate_flag(${SWIFTSOURCES_NO_LINK_NAME} "NO_LINK_NAME" NO_LINK_NAME_arg)
6767 translate_flag(${SWIFTSOURCES_IS_FRAGILE} "IS_FRAGILE" IS_FRAGILE_arg)
6868 translate_flag(${SWIFTSOURCES_ONLY_SWIFTMODULE} "ONLY_SWIFTMODULE" ONLY_SWIFTMODULE_arg)
69+ translate_flag(${SWIFTSOURCES_NO_SWIFTMODULE} "NO_SWIFTMODULE" NO_SWIFTMODULE_arg)
6970 if (DEFINED SWIFTSOURCES_BOOTSTRAPPING)
7071 set (BOOTSTRAPPING_arg "BOOTSTRAPPING" ${SWIFTSOURCES_BOOTSTRAPPING} )
7172 endif ()
@@ -161,6 +162,7 @@ function(handle_swift_sources
161162 ${BOOTSTRAPPING_arg}
162163 ${IS_FRAGILE_arg}
163164 ${ONLY_SWIFTMODULE_arg}
165+ ${NO_SWIFTMODULE_arg}
164166 INSTALL_BINARY_SWIFTMODULE ${SWIFTSOURCES_INSTALL_BINARY_SWIFTMODULE}
165167 INSTALL_IN_COMPONENT "${SWIFTSOURCES_INSTALL_IN_COMPONENT} "
166168 DEPLOYMENT_VERSION_OSX ${SWIFTSOURCES_DEPLOYMENT_VERSION_OSX}
@@ -405,6 +407,8 @@ endfunction()
405407# [IS_MAIN] # This is an executable, not a library
406408# [IS_STDLIB]
407409# [IS_STDLIB_CORE] # This is the core standard library
410+ # [ONLY_SWIFTMODULE] # Emit swiftmodule only, no binary
411+ # [NO_SWIFTMODULE] # Emit binary only, no swiftmodule
408412# [OPT_FLAGS] # Optimization flags (overrides SWIFT_OPTIMIZE)
409413# [MODULE_DIR] # Put .swiftmodule, .swiftdoc., and .o
410414# # into this directory.
@@ -419,7 +423,7 @@ function(_compile_swift_files
419423 dependency_sib_target_out_var_name dependency_sibopt_target_out_var_name
420424 dependency_sibgen_target_out_var_name)
421425 cmake_parse_arguments (SWIFTFILE
422- "IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;IS_FRAGILE;ONLY_SWIFTMODULE"
426+ "IS_MAIN;IS_STDLIB;IS_STDLIB_CORE;IS_SDK_OVERLAY;EMBED_BITCODE;STATIC;IS_FRAGILE;ONLY_SWIFTMODULE;NO_SWIFTMODULE "
423427 "OUTPUT;MODULE_NAME;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_OSX;DEPLOYMENT_VERSION_IOS;DEPLOYMENT_VERSION_TVOS;DEPLOYMENT_VERSION_WATCHOS;MACCATALYST_BUILD_FLAVOR;BOOTSTRAPPING;INSTALL_BINARY_SWIFTMODULE"
424428 "SOURCES;FLAGS;DEPENDS;SDK;ARCHITECTURE;OPT_FLAGS;MODULE_DIR"
425429 ${ARGN} )
@@ -678,6 +682,10 @@ function(_compile_swift_files
678682 get_bootstrapping_path(lib_dir ${SWIFTLIB_DIR} "${SWIFTFILE_BOOTSTRAPPING} " )
679683
680684 if (NOT SWIFTFILE_IS_MAIN)
685+ list (APPEND swift_flags "-parse-as-library" )
686+ endif ()
687+
688+ if (NOT SWIFTFILE_IS_MAIN AND NOT SWIFTFILE_NO_SWIFTMODULE)
681689 # Determine the directory where the module file should be placed.
682690 if (SWIFTFILE_MODULE_DIR)
683691 set (module_dir "${SWIFTFILE_MODULE_DIR} " )
@@ -687,8 +695,6 @@ function(_compile_swift_files
687695 message (FATAL_ERROR "Don't know where to put the module files" )
688696 endif ()
689697
690- list (APPEND swift_flags "-parse-as-library" )
691-
692698 set (module_base "${module_dir} /${SWIFTFILE_MODULE_NAME} " )
693699
694700 set (module_dir_static "${SWIFTSTATICLIB_DIR} /${library_subdir} " )
@@ -1068,7 +1074,7 @@ function(_compile_swift_files
10681074 #
10691075 # We only build these when we are not producing a main file. We could do this
10701076 # with sib/sibgen, but it is useful for looking at the stdlib.
1071- if (NOT SWIFTFILE_IS_MAIN)
1077+ if (NOT SWIFTFILE_IS_MAIN AND NOT SWIFTFILE_NO_SWIFTMODULE )
10721078 add_custom_command_target(
10731079 module_dependency_target
10741080 COMMAND
0 commit comments