Skip to content

Commit f4e7c07

Browse files
committed
[CMake] Adjust FetchContent of 'swift-syntax'
* Move the logic to right before include(lib) because swift-syntax is a "lib" * Use function to limit the scope of variables for FetchContent * Use standard 'CMAKE_*_OUTPUT_DIRECTORY' instead of custom variable names.
1 parent 1dfc10e commit f4e7c07

File tree

1 file changed

+27
-17
lines changed

1 file changed

+27
-17
lines changed

CMakeLists.txt

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,23 +1162,6 @@ endif()
11621162
swift_get_host_triple(SWIFT_HOST_TRIPLE)
11631163
set(SWIFT_HOST_MODULE_TRIPLE "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${SWIFT_HOST_VARIANT_ARCH}_MODULE}")
11641164
set(SWIFT_HOST_LIBRARIES_DEST_DIR "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/swift/host")
1165-
set(SWIFT_HOST_RUNTIME_DEST_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
1166-
if(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD")
1167-
set(SWIFT_HOST_LIBRARIES_RPATH "$ORIGIN;$ORIGIN/../${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}")
1168-
endif()
1169-
if(SWIFT_BUILD_SWIFT_SYNTAX)
1170-
if(NOT EXISTS "${SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE}")
1171-
message(SEND_ERROR "swift-syntax is required to build the Swift compiler. Please run update-checkout or specify SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE")
1172-
endif()
1173-
1174-
set(BUILD_SHARED_LIBS_OLD "${BUILD_SHARED_LIBS}")
1175-
set(BUILD_SHARED_LIBS ON)
1176-
FetchContent_Declare(SwiftSyntax
1177-
SOURCE_DIR "${SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE}"
1178-
)
1179-
FetchContent_MakeAvailable(SwiftSyntax)
1180-
set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_OLD}")
1181-
endif()
11821165

11831166
if(SWIFT_INCLUDE_TOOLS)
11841167
message(STATUS "Building host Swift tools for ${SWIFT_HOST_VARIANT_SDK} ${SWIFT_HOST_VARIANT_ARCH}")
@@ -1332,6 +1315,33 @@ endif()
13321315
add_subdirectory(include)
13331316

13341317
if(SWIFT_INCLUDE_TOOLS)
1318+
# Include 'swift-syntax'.
1319+
# This is a function because we want to set some 'CMAKE_*' variables temporarily.'
1320+
# TODO: Replace this with 'block()' after CMake 3.25
1321+
function(include_swift_syntax)
1322+
if(NOT SWIFT_BUILD_SWIFT_SYNTAX)
1323+
return()
1324+
endif()
1325+
if(NOT EXISTS "${SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE}")
1326+
message(SEND_ERROR "swift-syntax is required to build the Swift compiler. Please run update-checkout or specify SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE")
1327+
return()
1328+
endif()
1329+
1330+
set(BUILD_SHARED_LIBS ON)
1331+
# All libraries in 'swift-syntax' goes to 'lib/swift/host'.
1332+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${SWIFT_HOST_LIBRARIES_DEST_DIR}")
1333+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${SWIFT_HOST_LIBRARIES_DEST_DIR}")
1334+
if(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD")
1335+
set(SWIFT_HOST_LIBRARIES_RPATH "$ORIGIN;$ORIGIN/../${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}")
1336+
endif()
1337+
1338+
FetchContent_Declare(SwiftSyntax
1339+
SOURCE_DIR "${SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE}"
1340+
)
1341+
FetchContent_MakeAvailable(SwiftSyntax)
1342+
endfunction()
1343+
include_swift_syntax()
1344+
13351345
add_subdirectory(lib)
13361346

13371347
# SwiftCompilerSources must come before "tools".

0 commit comments

Comments
 (0)