@@ -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
@@ -47,22 +60,25 @@ if (NOT SWIFT_SUPPORTS_DISABLE_IMPLICIT_STRING_PROCESSING_MODULE_IMPORT)
4760endif ()
4861
4962# Determine the module triple.
50- # FIXME: This is a hack. It's all a hack. Windows isn't setting
51- # CMAKE_Swift_COMPILER_TARGET.
52- if (CMAKE_Swift_COMPILER_TARGET)
53- string (REGEX REPLACE "macosx[0-9]+([.][0-9]+)?" "macos" SWIFT_MODULE_TRIPLE
54- ${CMAKE_Swift_COMPILER_TARGET} )
55- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Windows" )
56- if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64" )
57- set (SWIFT_MODULE_TRIPLE "x86_64-unknown-windows-msvc" )
58- elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64" )
59- set (SWIFT_MODULE_TRIPLE "aarch64-unknown-windows-msvc" )
63+ if ("${SWIFT_HOST_MODULE_TRIPLE} " STREQUAL "" )
64+ # FIXME: This is a hack. It's all a hack. Windows isn't setting
65+ # CMAKE_Swift_COMPILER_TARGET.
66+ if (CMAKE_Swift_COMPILER_TARGET)
67+ string (REGEX REPLACE "macosx[0-9]+([.][0-9]+)?" "macos" SWIFT_HOST_MODULE_TRIPLE
68+ ${CMAKE_Swift_COMPILER_TARGET} )
69+ elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Windows" )
70+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64" )
71+ set (SWIFT_HOST_MODULE_TRIPLE "x86_64-unknown-windows-msvc" )
72+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64" )
73+ set (SWIFT_HOST_MODULE_TRIPLE "aarch64-unknown-windows-msvc" )
74+ else ()
75+ message (FATAL_ERROR "Unrecognized architecture for Windows host" )
76+ endif ()
6077 else ()
61- message (FATAL_ERROR "Unrecognized architecture for Windows host " )
78+ message (FATAL_ERROR "Host module triple required " )
6279 endif ()
6380endif ()
64-
65- message (STATUS "Module triple: ${SWIFT_MODULE_TRIPLE} " )
81+ message (STATUS "Module triple: ${SWIFT_HOST_MODULE_TRIPLE} " )
6682
6783# Force single-threaded-only syntax trees to eliminate the Darwin
6884# dependency in the compiler.
@@ -76,10 +92,4 @@ if (SWIFTSYNTAX_ENABLE_ASSERTIONS)
7692endif ()
7793
7894add_subdirectory (Sources )
79-
80- export (EXPORT SwiftSyntaxTargets
81- FILE "${CMAKE_CURRENT_BINARY_DIR} /cmake/SwiftSyntaxTargets.cmake"
82- NAMESPACE SwiftSyntax::
83- )
84-
8595add_subdirectory (cmake/modules)
0 commit comments