diff --git a/swiftwinrt/abi_writer.h b/swiftwinrt/abi_writer.h index 8e20bb4e..18423f12 100644 --- a/swiftwinrt/abi_writer.h +++ b/swiftwinrt/abi_writer.h @@ -331,4 +331,16 @@ namespace swiftwinrt w.save_header(); } + + inline void write_modulemap() + { + writer w; + write_preamble(w, /* swift_code: */ false); + w.write(R"^_^(module % { + header "%.h" + export * +} +)^_^", settings.get_c_module_name(), settings.get_c_module_name()); + w.save_modulemap(); + } } diff --git a/swiftwinrt/main.cpp b/swiftwinrt/main.cpp index 450fb929..8d9b37e9 100644 --- a/swiftwinrt/main.cpp +++ b/swiftwinrt/main.cpp @@ -435,6 +435,7 @@ Where is one or more of: } write_include_all(c.namespaces()); + write_modulemap(); if (settings.verbose) { w.write(" time: %ms\n", get_elapsed_time(start)); diff --git a/swiftwinrt/type_writers.h b/swiftwinrt/type_writers.h index a81833f3..95abbc09 100644 --- a/swiftwinrt/type_writers.h +++ b/swiftwinrt/type_writers.h @@ -685,6 +685,11 @@ namespace swiftwinrt flush_to_file(root_directory() / "CWinRT" / "include" / (type_namespace + ".h")); } + void save_modulemap() + { + flush_to_file(root_directory() / "CWinRT" / "include" / "module.modulemap"); + } + void save_cmake() { flush_to_file(project_directory() / "CMakeLists.txt"); diff --git a/tests/test_component/Sources/CWinRT/include/module.modulemap b/tests/test_component/Sources/CWinRT/include/module.modulemap index f44feab3..f255dc8d 100644 --- a/tests/test_component/Sources/CWinRT/include/module.modulemap +++ b/tests/test_component/Sources/CWinRT/include/module.modulemap @@ -1,4 +1,6 @@ -module Ctest_component { - header "Ctest_component.h" - export * -} +// WARNING: Please don't edit this file. It was generated by Swift/WinRT v0.0.1 + +module Ctest_component { + header "Ctest_component.h" + export * +}