Skip to content

Commit c6fc167

Browse files
committed
Add Swift build system files
1 parent 997ba39 commit c6fc167

File tree

2 files changed

+178
-0
lines changed

2 files changed

+178
-0
lines changed

.swift-build-presets

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
[preset: codeql]
2+
release
3+
build-subdir=codeql
4+
5+
skip-ios
6+
skip-tvos
7+
skip-watchos
8+
9+
skip-test-osx
10+
skip-test-linux
11+
skip-test-swiftpm
12+
skip-test-swift-driver
13+
skip-test-swiftsyntax
14+
skip-test-indexstore-db
15+
skip-test-sourcekit-lsp
16+
skip-test-playgroundsupport
17+
skip-test-skstresstester
18+
skip-test-swiftformat
19+
skip-test-swiftevolve
20+
skip-test-toolchain-benchmarks
21+
skip-test-swift-inspect
22+
skip-test-swift
23+
24+
skip-build-clang-tools-extra
25+
skip-build-benchmarks
26+
skip-build-android
27+

swift-build-system.patch

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 2748e9420cd..665fad4fd2a 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -866,12 +866,12 @@ if(SWIFT_PARALLEL_LINK_JOBS)
6+
endif()
7+
endif()
8+
9+
-# Set the CMAKE_OSX_* variables in a way that minimizes conflicts.
10+
-if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin" AND NOT CMAKE_CROSSCOMPILING)
11+
- set(CMAKE_OSX_SYSROOT "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_PATH}")
12+
- set(CMAKE_OSX_ARCHITECTURES "")
13+
- set(CMAKE_OSX_DEPLOYMENT_TARGET "")
14+
-endif()
15+
+# # Set the CMAKE_OSX_* variables in a way that minimizes conflicts.
16+
+# if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin" AND NOT CMAKE_CROSSCOMPILING)
17+
+# set(CMAKE_OSX_SYSROOT "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_PATH}")
18+
+# set(CMAKE_OSX_ARCHITECTURES "")
19+
+# set(CMAKE_OSX_DEPLOYMENT_TARGET "")
20+
+# endif()
21+
22+
if(SWIFT_INCLUDE_TOOLS)
23+
message(STATUS "Building host Swift tools for ${SWIFT_HOST_VARIANT_SDK} ${SWIFT_HOST_VARIANT_ARCH}")
24+
diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
25+
index 8046ea79966..4c2c040a573 100644
26+
--- a/cmake/modules/CMakeLists.txt
27+
+++ b/cmake/modules/CMakeLists.txt
28+
@@ -17,3 +17,55 @@ configure_file(
29+
SwiftConfig.cmake.in
30+
${swift_cmake_builddir}/SwiftConfig.cmake
31+
@ONLY)
32+
+
33+
+
34+
+# Generate install-tree CMake files
35+
+set(SWIFT_CONFIG_CODE "
36+
+# Compute the installation prefix from this LLVMConfig.cmake file location.
37+
+get_filename_component(SWIFT_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)")
38+
+# Construct the proper number of get_filename_component(... PATH)
39+
+# calls to compute the installation prefix.
40+
+string(REGEX REPLACE "/" ";" _count "${SWIFT_INSTALL_PACKAGE_DIR}")
41+
+foreach(p ${_count})
42+
+ set(SWIFT_CONFIG_CODE "${SWIFT_CONFIG_CODE}
43+
+get_filename_component(SWIFT_INSTALL_PREFIX \"\${SWIFT_INSTALL_PREFIX}\" PATH)")
44+
+endforeach(p)
45+
+set(SWIFT_INCLUDE_DIRS "\${SWIFT_INSTALL_PREFIX}/include")
46+
+set(SWIFT_LIBRARY_DIRS "\${SWIFT_INSTALL_PREFIX}/lib")
47+
+set(SWIFT_CMAKE_DIR "\${SWIFT_INSTALL_PREFIX}/${SWIFT_INSTALL_PACKAGE_DIR}")
48+
+set(SWIFT_BINARY_DIR "\${SWIFT_INSTALL_PREFIX}")
49+
+
50+
+set(SWIFT_EXPORTS_FILE "\${SWIFT_CMAKE_DIR}/SwiftExports.cmake")
51+
+set(SWIFT_CONFIG_EXPORTS ${SWIFT_EXPORTS})
52+
+
53+
+install(TARGETS ${SWIFT_CONFIG_EXPORTS}
54+
+ DESTINATION .
55+
+ EXPORT SwiftExports
56+
+ COMPONENT dev)
57+
+
58+
+include(CMakePackageConfigHelpers)
59+
+configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/SwiftConfig.cmake.in
60+
+ "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/SwiftConfig.cmake"
61+
+ INSTALL_DESTINATION ${SWIFT_INSTALL_PACKAGE_DIR}/cmake/swift)
62+
+
63+
+install(FILES
64+
+ ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/SwiftConfig.cmake
65+
+ DESTINATION ${SWIFT_INSTALL_PACKAGE_DIR})
66+
+
67+
+install(EXPORT SwiftExports DESTINATION ${SWIFT_INSTALL_PACKAGE_DIR})
68+
+
69+
+# installing each header individually to preserve the directory structure
70+
+macro(install_headers directory ext)
71+
+ file(GLOB_RECURSE headers RELATIVE ${directory} ${directory}/*.${ext})
72+
+ foreach(header ${headers})
73+
+ get_filename_component(dir ${header} DIRECTORY)
74+
+ install(FILES ${directory}/${header} DESTINATION ${SWIFT_INCLUDE_DIRS}/${dir})
75+
+ endforeach()
76+
+endmacro()
77+
+install_headers(${SWIFT_INCLUDE_DIR} h)
78+
+install_headers(${SWIFT_MAIN_INCLUDE_DIR} h)
79+
+install_headers(${SWIFT_INCLUDE_DIR} def)
80+
+install_headers(${SWIFT_MAIN_INCLUDE_DIR} def)
81+
+
82+
+install(DIRECTORY ${CMAKE_SOURCE_DIR}/stdlib/public/SwiftShims DESTINATION stdlib/public)
83+
+
84+
diff --git a/cmake/modules/SwiftComponents.cmake b/cmake/modules/SwiftComponents.cmake
85+
index 401cff7a6ef..15dba54db72 100644
86+
--- a/cmake/modules/SwiftComponents.cmake
87+
+++ b/cmake/modules/SwiftComponents.cmake
88+
@@ -72,7 +72,7 @@ set(_SWIFT_DEFINED_COMPONENTS
89+
# for the following exceptions.
90+
set(_SWIFT_DEFAULT_COMPONENTS "${_SWIFT_DEFINED_COMPONENTS}")
91+
# 'dev' takes up a lot of disk space and isn't part of a normal toolchain.
92+
-list(REMOVE_ITEM _SWIFT_DEFAULT_COMPONENTS "dev")
93+
+#list(REMOVE_ITEM _SWIFT_DEFAULT_COMPONENTS "dev")
94+
# These clang header options conflict with 'clang-builtin-headers'.
95+
list(REMOVE_ITEM _SWIFT_DEFAULT_COMPONENTS "clang-resource-dir-symlink")
96+
list(REMOVE_ITEM _SWIFT_DEFAULT_COMPONENTS "clang-builtin-headers-in-clang-resource-dir")
97+
diff --git a/cmake/modules/SwiftSharedCMakeConfig.cmake b/cmake/modules/SwiftSharedCMakeConfig.cmake
98+
index 0b830e33ce1..22f074cf7ae 100644
99+
--- a/cmake/modules/SwiftSharedCMakeConfig.cmake
100+
+++ b/cmake/modules/SwiftSharedCMakeConfig.cmake
101+
@@ -14,6 +14,20 @@ macro(swift_common_standalone_build_config_llvm product)
102+
# Then we import LLVMConfig. This is going to override whatever cached value
103+
# we have for LLVM_ENABLE_ASSERTIONS.
104+
find_package(LLVM CONFIG REQUIRED NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
105+
+ if (APPLE)
106+
+ if (LLVM_VERSION_MAJOR GREATER_EQUAL 12)
107+
+ # Precompiled LLVM 12+ on macOS contains a hardcoded dependency on a very
108+
+ # specific version of libcurses:
109+
+ #
110+
+ # set_target_properties(LLVMSupport PROPERTIES
111+
+ # INTERFACE_LINK_LIBRARIES "m;ZLIB::ZLIB;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/usr/lib/libcurses.tbd;LLVMDemangle"
112+
+ # )
113+
+ #
114+
+ # So we are monkey-patching it here
115+
+ set_target_properties(LLVMSupport PROPERTIES
116+
+ INTERFACE_LINK_LIBRARIES "z;curses;m;LLVMDemangle")
117+
+ endif()
118+
+ endif()
119+
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
120+
121+
set(LLVM_MAIN_SRC_DIR "${LLVM_BUILD_MAIN_SRC_DIR}"
122+
diff --git a/utils/build-script b/utils/build-script
123+
index 3f2e0549568..885264e7e89 100755
124+
--- a/utils/build-script
125+
+++ b/utils/build-script
126+
@@ -720,6 +720,9 @@ class BuildScriptInvocation(object):
127+
'-DCMAKE_IGNORE_PATH=/usr/lib;/usr/local/lib;/lib',
128+
'-DPKG_CONFIG_EXECUTABLE=/usr/bin/false',
129+
]
130+
+ args.extra_cmake_options += [
131+
+ '-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64'
132+
+ ]
133+
134+
if toolchain.libtool is not None:
135+
impl_args += [
136+
diff --git a/utils/swift_build_support/swift_build_support/products/cmark.py b/utils/swift_build_support/swift_build_support/products/cmark.py
137+
index cac4f2e03d1..eb854e76860 100644
138+
--- a/utils/swift_build_support/swift_build_support/products/cmark.py
139+
+++ b/utils/swift_build_support/swift_build_support/products/cmark.py
140+
@@ -14,6 +14,11 @@ from . import product
141+
142+
143+
class CMark(product.Product):
144+
+ def __init__(self, args, toolchain, source_dir, build_dir):
145+
+ product.Product.__init__(self, args, toolchain, source_dir,
146+
+ build_dir)
147+
+ self.cmake_options.define('CMAKE_INSTALL_PREFIX:STRING', self.args.install_prefix)
148+
+
149+
@classmethod
150+
def is_build_script_impl_product(cls):
151+
"""is_build_script_impl_product -> bool

0 commit comments

Comments
 (0)