Skip to content
This repository was archived by the owner on Jul 1, 2023. It is now read-only.

Commit 229b5f2

Browse files
authored
build: add support for installing the package (#651)
This extends the CMake build system to install the Swift content. This will be used to package TensorFlow into the toolchain.
1 parent fb339cb commit 229b5f2

File tree

5 files changed

+72
-0
lines changed

5 files changed

+72
-0
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ option(USE_BUNDLED_CTENSORFLOW
1111

1212
find_package(TensorFlow REQUIRED)
1313

14+
include(SwiftSupport)
15+
1416
add_compile_options("$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xllvm -sil-inline-generics>")
1517
add_compile_options("$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xllvm -sil-partial-specialization>")
1618

Sources/CTensorFlow/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,16 @@ if(NOT USE_BUNDLED_CTENSORFLOW)
55
endif()
66
target_link_libraries(CTensorFlow INTERFACE
77
tensorflow)
8+
9+
install(FILES module.modulemap CTensorFlow.h
10+
DESTINATION lib/swift/tensorflow)
11+
install(DIRECTORY $<TARGET_PROPERTY:tensorflow,INTERFACE_INCLUDE_DIRECTORIES>/tensorflow/c
12+
DESTINATION lib/swift/tensorflow
13+
FILES_MATCHING
14+
PATTERN c_api.h
15+
PATTERN c_api_experimental.h
16+
PATTERN tf_attrtype.h
17+
PATTERN tf_datatype.h
18+
PATTERN tf_status.h
19+
PATTERN tf_tensor.h
20+
PATTERN eager/c_api.h)

Sources/Tensor/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,13 @@ add_library(Tensor SHARED
33
TensorUtilities.swift)
44
set_target_properties(Tensor PROPERTIES
55
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY})
6+
7+
install(TARGETS Tensor
8+
ARCHIVE DESTINATION lib/swift/$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>
9+
LIBRARY DESTINATION lib/swift/$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>
10+
RUNTIME DESTINATION bin)
11+
get_swift_host_arch(swift_arch)
12+
install(FILES
13+
$<TARGET_PROPERTY:Tensor,Swift_MODULE_DIRECTORY>/Tensor.swiftdoc
14+
$<TARGET_PROPERTY:Tensor,Swift_MODULE_DIRECTORY>/Tensor.swiftmodule
15+
DESTINATION lib/swift/${swift_arch})

Sources/TensorFlow/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,13 @@ set_target_properties(TensorFlow PROPERTIES
6262
target_link_libraries(TensorFlow PRIVATE
6363
CTensorFlow
6464
Tensor)
65+
66+
install(TARGETS TensorFlow
67+
ARCHIVE DESTINATION lib/swift/$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>
68+
LIBRARY DESTINATION lib/swift/$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>
69+
RUNTIME DESTINATION bin)
70+
get_swift_host_arch(swift_arch)
71+
install(FILES
72+
$<TARGET_PROPERTY:TensorFlow,Swift_MODULE_DIRECTORY>/TensorFlow.swiftdoc
73+
$<TARGET_PROPERTY:TensorFlow,Swift_MODULE_DIRECTORY>/TensorFlow.swiftmodule
74+
DESTINATION lib/swift/${swift_arch})

cmake/modules/SwiftSupport.cmake

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
# Returns the current architecture name in a variable
3+
#
4+
# Usage:
5+
# get_swift_host_arch(result_var_name)
6+
#
7+
# If the current architecture is supported by Swift, sets ${result_var_name}
8+
# with the sanitized host architecture name derived from CMAKE_SYSTEM_PROCESSOR.
9+
function(get_swift_host_arch result_var_name)
10+
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
11+
set("${result_var_name}" "x86_64" PARENT_SCOPE)
12+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64")
13+
set("${result_var_name}" "aarch64" PARENT_SCOPE)
14+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64")
15+
set("${result_var_name}" "powerpc64" PARENT_SCOPE)
16+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64le")
17+
set("${result_var_name}" "powerpc64le" PARENT_SCOPE)
18+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x")
19+
set("${result_var_name}" "s390x" PARENT_SCOPE)
20+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l")
21+
set("${result_var_name}" "armv6" PARENT_SCOPE)
22+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l")
23+
set("${result_var_name}" "armv7" PARENT_SCOPE)
24+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7-a")
25+
set("${result_var_name}" "armv7" PARENT_SCOPE)
26+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
27+
set("${result_var_name}" "x86_64" PARENT_SCOPE)
28+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "IA64")
29+
set("${result_var_name}" "itanium" PARENT_SCOPE)
30+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86")
31+
set("${result_var_name}" "i686" PARENT_SCOPE)
32+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686")
33+
set("${result_var_name}" "i686" PARENT_SCOPE)
34+
else()
35+
message(FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR}")
36+
endif()
37+
endfunction()

0 commit comments

Comments
 (0)