@@ -15,12 +15,25 @@ project(SwiftSyntax LANGUAGES C Swift)
1515set (SWIFT_VERSION 5)
1616set (CMAKE_Swift_LANGUAGE_VERSION ${SWIFT_VERSION} )
1717
18+ if (CMAKE_VERSION VERSION_LESS 3.21)
19+ get_property (parent_dir DIRECTORY PROPERTY PARENT_DIRECTORY )
20+ if (NOT parent_dir)
21+ set (PROJECT_IS_TOP_LEVEL TRUE )
22+ endif ()
23+ endif ()
24+
1825# The subdirectory into which host libraries will be installed.
1926set (SWIFT_HOST_LIBRARIES_SUBDIRECTORY "swift/host" )
2027
21- set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /lib/${SWIFT_HOST_LIBRARIES_SUBDIRECTORY} " )
22- set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /lib/${SWIFT_HOST_LIBRARIES_SUBDIRECTORY} " )
23- set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /bin" )
28+ if (NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY )
29+ set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /lib/${SWIFT_HOST_LIBRARIES_SUBDIRECTORY} " )
30+ endif ()
31+ if (NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY )
32+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /lib/${SWIFT_HOST_LIBRARIES_SUBDIRECTORY} " )
33+ endif ()
34+ if (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY )
35+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /bin" )
36+ endif ()
2437
2538set (CMAKE_MACOSX_RPATH YES )
2639
@@ -49,22 +62,25 @@ if (NOT SWIFT_SUPPORTS_DISABLE_IMPLICIT_STRING_PROCESSING_MODULE_IMPORT)
4962endif ()
5063
5164# Determine the module triple.
52- # FIXME: This is a hack. It's all a hack. Windows isn't setting
53- # CMAKE_Swift_COMPILER_TARGET.
54- if (CMAKE_Swift_COMPILER_TARGET)
55- string (REGEX REPLACE "macosx[0-9]+([.][0-9]+)?" "macos" SWIFT_MODULE_TRIPLE
56- ${CMAKE_Swift_COMPILER_TARGET} )
57- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Windows" )
58- if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64" )
59- set (SWIFT_MODULE_TRIPLE "x86_64-unknown-windows-msvc" )
60- elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64" )
61- set (SWIFT_MODULE_TRIPLE "aarch64-unknown-windows-msvc" )
65+ if ("${SWIFT_HOST_MODULE_TRIPLE} " STREQUAL "" )
66+ # FIXME: This is a hack. It's all a hack. Windows isn't setting
67+ # CMAKE_Swift_COMPILER_TARGET.
68+ if (CMAKE_Swift_COMPILER_TARGET)
69+ string (REGEX REPLACE "macosx[0-9]+([.][0-9]+)?" "macos" SWIFT_HOST_MODULE_TRIPLE
70+ ${CMAKE_Swift_COMPILER_TARGET} )
71+ elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Windows" )
72+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64" )
73+ set (SWIFT_HOST_MODULE_TRIPLE "x86_64-unknown-windows-msvc" )
74+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64" )
75+ set (SWIFT_HOST_MODULE_TRIPLE "aarch64-unknown-windows-msvc" )
76+ else ()
77+ message (FATAL_ERROR "Unrecognized architecture for Windows host" )
78+ endif ()
6279 else ()
63- message (FATAL_ERROR "Unrecognized architecture for Windows host " )
80+ message (FATAL_ERROR "Host module triple required " )
6481 endif ()
6582endif ()
66-
67- message (STATUS "Module triple: ${SWIFT_MODULE_TRIPLE} " )
83+ message (STATUS "Module triple: ${SWIFT_HOST_MODULE_TRIPLE} " )
6884
6985# Force single-threaded-only syntax trees to eliminate the Darwin
7086# dependency in the compiler.
@@ -78,10 +94,4 @@ if (SWIFTSYNTAX_ENABLE_ASSERTIONS)
7894endif ()
7995
8096add_subdirectory (Sources )
81-
82- export (EXPORT SwiftSyntaxTargets
83- FILE "${CMAKE_CURRENT_BINARY_DIR} /cmake/SwiftSyntaxTargets.cmake"
84- NAMESPACE SwiftSyntax::
85- )
86-
8797add_subdirectory (cmake/modules)
0 commit comments