11
11
12
12
cmake_minimum_required (VERSION 3.19 )
13
13
14
+ enable_language (Swift )
15
+
14
16
# Source root directory for executorch.
15
17
if (NOT EXECUTORCH_ROOT )
16
18
set (EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR} /../.. )
17
19
endif ()
18
20
19
21
add_library (extension_apple )
20
22
21
- file (GLOB EXPORTED_SOURCES
23
+ file (GLOB OBJC_SOURCES
22
24
ExecuTorch/Exported/*.m
23
25
ExecuTorch/Exported/*.mm
24
- )
25
-
26
- file (GLOB INTERNAL_SOURCES
27
26
ExecuTorch/Internal/*.m
28
27
ExecuTorch/Internal/*.mm
29
28
)
30
29
30
+ file (GLOB SWIFT_SOURCES
31
+ ExecuTorch/Exported/*.swift
32
+ )
33
+
31
34
target_sources (extension_apple PRIVATE
32
- ${EXPORTED_SOURCES }
33
- ${INTERNAL_SOURCES }
35
+ ${OBJC_SOURCES }
36
+ ${SWIFT_SOURCES }
34
37
)
35
38
36
39
target_include_directories (extension_apple
@@ -43,9 +46,41 @@ target_link_libraries(extension_apple
43
46
PRIVATE executorch ${FOUNDATION_FRAMEWORK}
44
47
)
45
48
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
48
50
"-fobjc-arc"
49
51
"-fno-exceptions"
50
52
"-fno-rtti"
51
53
)
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