1111
1212cmake_minimum_required (VERSION 3.19)
1313
14+ enable_language (Swift)
15+
1416# Source root directory for executorch.
1517if (NOT EXECUTORCH_ROOT)
1618 set (EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR} /../..)
1719endif ()
1820
1921add_library (extension_apple)
2022
21- file (GLOB EXPORTED_SOURCES
23+ file (GLOB OBJC_SOURCES
2224 ExecuTorch/Exported/*.m
2325 ExecuTorch/Exported/*.mm
24- )
25-
26- file (GLOB INTERNAL_SOURCES
2726 ExecuTorch/Internal /*.m
2827 ExecuTorch/Internal /*.mm
2928)
3029
30+ file (GLOB SWIFT_SOURCES
31+ ExecuTorch/Exported/*.swift
32+ )
33+
3134target_sources (extension_apple PRIVATE
32- ${EXPORTED_SOURCES }
33- ${INTERNAL_SOURCES }
35+ ${OBJC_SOURCES }
36+ ${SWIFT_SOURCES }
3437)
3538
3639target_include_directories (extension_apple
@@ -43,9 +46,41 @@ target_link_libraries(extension_apple
4346 PRIVATE executorch ${FOUNDATION_FRAMEWORK}
4447)
4548
46- target_compile_options (extension_apple PUBLIC ${_common_compile_options} )
47- target_compile_options (extension_apple PRIVATE
49+ set_source_files_properties (${OBJC_SOURCES} PROPERTIES COMPILE_FLAGS
4850 "-fobjc-arc"
4951 "-fno-exceptions"
5052 "-fno-rtti"
5153)
54+
55+ set (MODULE_MAP_DIR ${CMAKE_CURRENT_BINARY_DIR} /module)
56+ set (MODULE_MAP_FILE ${MODULE_MAP_DIR} /module.modulemap)
57+
58+ configure_file (
59+ "${CMAKE_CURRENT_SOURCE_DIR} /ExecuTorch/Exported/ExecuTorch.h"
60+ "${MODULE_MAP_DIR} /ExecuTorch.h"
61+ COPYONLY
62+ )
63+
64+ file (MAKE_DIRECTORY ${MODULE_MAP_DIR} )
65+ file (WRITE ${MODULE_MAP_FILE}
66+ "module ExecuTorch {
67+ umbrella header \" ExecuTorch.h\"
68+ export *
69+ }
70+ " )
71+
72+ set (SWIFT_CLANG_INTEROP_FLAGS "-Xcc -fmodule-map-file=${MODULE_MAP_FILE} -I ${MODULE_MAP_DIR} " )
73+
74+ set_target_properties (extension_apple PROPERTIES
75+ Swift_MODULE_NAME "ExecuTorch"
76+ Swift_FLAGS "${SWIFT_CLANG_INTEROP_FLAGS} "
77+ XCODE_ATTRIBUTE_SWIFT_MODULE_NAME "ExecuTorch"
78+ XCODE_ATTRIBUTE_BUILD_LIBRARY_FOR_DISTRIBUTION YES
79+ XCODE_ATTRIBUTE_SWIFT_ENABLE_TESTABILITY YES
80+ XCODE_ATTRIBUTE_OTHER_SWIFT_FLAGS "${SWIFT_CLANG_INTEROP_FLAGS} "
81+ )
82+
83+ add_custom_command (
84+ TARGET extension_apple POST_BUILD
85+ COMMAND ${CMAKE_COMMAND} -E rm -rf ${MODULE_MAP_DIR}
86+ )
0 commit comments