11
2- cmake_minimum_required (VERSION 3.4.3 )
2+ cmake_minimum_required (VERSION 3.15.1 )
33
4- list (APPEND CMAKE_MODULE_PATH
5- "${CMAKE_CURRENT_SOURCE_DIR} /cmake/modules" )
4+ list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} /cmake/modules)
65
7- project (XCTest
8- LANGUAGES
9- C)
10-
11- enable_testing ()
12- option (ENABLE_TESTING "Build tests" YES )
6+ project (XCTest LANGUAGES Swift)
137
148option (BUILD_SHARED_LIBS "Build shared libraries" ON )
159
16- option (XCTEST_PATH_TO_LIBDISPATCH_SOURCE "Path to libdispatch source" "" )
17- option (XCTEST_PATH_TO_LIBDISPATCH_BUILD "Path to libdispatch build" "" )
10+ if (NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
11+ find_package (dispatch CONFIG REQUIRED)
12+ find_package (Foundation CONFIG REQUIRED)
13+ endif ()
14+
15+ include (SwiftSupport)
16+ include (GNUInstallDirs)
17+
18+ add_library (XCTest
19+ Sources /XCTest/Private /WallClockTimeMetric.swift
20+ Sources /XCTest/Private /TestListing.swift
21+ Sources /XCTest/Private /XCTestCaseSuite.swift
22+ Sources /XCTest/Private /TestFiltering.swift
23+ Sources /XCTest/Private /XCTestInternalObservation.swift
24+ Sources /XCTest/Private /ObjectWrapper.swift
25+ Sources /XCTest/Private /PerformanceMeter.swift
26+ Sources /XCTest/Private /PrintObserver.swift
27+ Sources /XCTest/Private /ArgumentParser.swift
28+ Sources /XCTest/Private /SourceLocation.swift
29+ Sources /XCTest/Private /WaiterManager.swift
30+ Sources /XCTest/Private /IgnoredErrors.swift
31+ Sources /XCTest/Public /XCTestRun.swift
32+ Sources /XCTest/Public /XCTestMain.swift
33+ Sources /XCTest/Public /XCTestCase.swift
34+ Sources /XCTest/Public /XCTestSuite.swift
35+ Sources /XCTest/Public /XCTestSuiteRun.swift
36+ Sources /XCTest/Public /XCTestErrors.swift
37+ Sources /XCTest/Public /XCTestObservation.swift
38+ Sources /XCTest/Public /XCTestCaseRun.swift
39+ Sources /XCTest/Public /XCAbstractTest.swift
40+ Sources /XCTest/Public /XCTestObservationCenter.swift
41+ Sources /XCTest/Public /XCTestCase+Performance.swift
42+ Sources /XCTest/Public /XCTAssert.swift
43+ Sources /XCTest/Public /Asynchronous/XCTNSNotificationExpectation.swift
44+ Sources /XCTest/Public /Asynchronous/XCTNSPredicateExpectation.swift
45+ Sources /XCTest/Public /Asynchronous/XCTWaiter+Validation.swift
46+ Sources /XCTest/Public /Asynchronous/XCTWaiter.swift
47+ Sources /XCTest/Public /Asynchronous/XCTestCase+Asynchronous.swift
48+ Sources /XCTest/Public /Asynchronous/XCTestExpectation.swift)
49+ target_link_libraries (XCTest PRIVATE
50+ dispatch
51+ Foundation)
52+ set_target_properties (XCTest PROPERTIES
53+ Swift_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /swift
54+ INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR} /swift)
1855
19- option (XCTEST_PATH_TO_FOUNDATION_BUILD "Path to Foundation build" "" )
2056
2157if (ENABLE_TESTING)
58+ enable_testing ()
59+
2260 find_package (LLVM CONFIG)
2361 if (LLVM_FOUND)
2462 message (STATUS "Found LLVM ${LLVM_PACKAGE_VERSION} " )
@@ -31,91 +69,16 @@ if(ENABLE_TESTING)
3169 elseif (NOT DEFINED LLVM_MAIN_SRC_DIR OR NOT EXISTS ${LLVM_MAIN_SRC_DIR} )
3270 message (SEND_ERROR "LLVM not found and LLVM_MAIN_SRC_DIR not defined - required for testing" )
3371 endif ()
34- endif ()
35-
36- include (SwiftSupport)
37- include (GNUInstallDirs)
38-
39- if (CMAKE_SYSTEM_NAME STREQUAL Windows)
40- set (WORKAROUND_SR9138 -Xlinker;-ignore :4217)
41- set (WORKAROUND_SR9995 -Xlinker;-nodefaultlib:libcmt)
42- endif ()
4372
44- add_swift_library(XCTest
45- MODULE_NAME
46- XCTest
47- MODULE_LINK_NAME
48- XCTest
49- MODULE_PATH
50- ${CMAKE_CURRENT_BINARY_DIR} /swift/XCTest.swiftmodule
51- LINK_FLAGS
52- -L${XCTEST_PATH_TO_LIBDISPATCH_BUILD}
53- -L${XCTEST_PATH_TO_LIBDISPATCH_BUILD} /bin
54- -L${XCTEST_PATH_TO_LIBDISPATCH_BUILD} /src -ldispatch
55- -L${XCTEST_PATH_TO_LIBDISPATCH_BUILD} /src/BlocksRuntime
56- -L${XCTEST_PATH_TO_FOUNDATION_BUILD} -lFoundation
57-
58- # compatibility with Foundation build_script.py
59- -L${XCTEST_PATH_TO_FOUNDATION_BUILD} /Foundation
60-
61- ${WORKAROUND_SR9138}
62- ${WORKAROUND_SR9995}
63- SOURCES
64- Sources /XCTest/Private /WallClockTimeMetric.swift
65- Sources /XCTest/Private /TestListing.swift
66- Sources /XCTest/Private /XCTestCaseSuite.swift
67- Sources /XCTest/Private /TestFiltering.swift
68- Sources /XCTest/Private /XCTestInternalObservation.swift
69- Sources /XCTest/Private /ObjectWrapper.swift
70- Sources /XCTest/Private /PerformanceMeter.swift
71- Sources /XCTest/Private /PrintObserver.swift
72- Sources /XCTest/Private /ArgumentParser.swift
73- Sources /XCTest/Private /SourceLocation.swift
74- Sources /XCTest/Private /WaiterManager.swift
75- Sources /XCTest/Private /IgnoredErrors.swift
76- Sources /XCTest/Public /XCTestRun.swift
77- Sources /XCTest/Public /XCTestMain.swift
78- Sources /XCTest/Public /XCTestCase.swift
79- Sources /XCTest/Public /XCTestSuite.swift
80- Sources /XCTest/Public /XCTestSuiteRun.swift
81- Sources /XCTest/Public /XCTestErrors.swift
82- Sources /XCTest/Public /XCTestObservation.swift
83- Sources /XCTest/Public /XCTestCaseRun.swift
84- Sources /XCTest/Public /XCAbstractTest.swift
85- Sources /XCTest/Public /XCTestObservationCenter.swift
86- Sources /XCTest/Public /XCTestCase+Performance.swift
87- Sources /XCTest/Public /XCTAssert.swift
88- Sources /XCTest/Public /Asynchronous/XCTNSNotificationExpectation.swift
89- Sources /XCTest/Public /Asynchronous/XCTNSPredicateExpectation.swift
90- Sources /XCTest/Public /Asynchronous/XCTWaiter+Validation.swift
91- Sources /XCTest/Public /Asynchronous/XCTWaiter.swift
92- Sources /XCTest/Public /Asynchronous/XCTestCase+Asynchronous.swift
93- Sources /XCTest/Public /Asynchronous/XCTestExpectation.swift
94- TARGET
95- ${CMAKE_C_COMPILER_TARGET}
96- SWIFT_FLAGS
97- $<$<NOT :$<CONFIG:Debug>>:-O>
98-
99- -I${XCTEST_PATH_TO_LIBDISPATCH_SOURCE}
100- -I${XCTEST_PATH_TO_LIBDISPATCH_BUILD} /src/swift
101- -I${XCTEST_PATH_TO_LIBDISPATCH_BUILD} /src/swift/swift
102- -Xcc -fblocks
103-
104- -I${XCTEST_PATH_TO_FOUNDATION_BUILD} /swift
105- -Fsystem ${XCTEST_PATH_TO_FOUNDATION_BUILD}
106-
107- # compatibility with Foundation build_script.py
108- -I${XCTEST_PATH_TO_FOUNDATION_BUILD} /Foundation
109- -I${XCTEST_PATH_TO_FOUNDATION_BUILD} /Foundation/usr/lib/swift)
110-
111- if (ENABLE_TESTING)
11273 if (EXISTS ${LLVM_MAIN_SRC_DIR} /utils/lit/lit.py)
11374 set (LIT_COMMAND "${LLVM_MAIN_SRC_DIR} /utils/lit/lit.py"
11475 CACHE STRING "command used to spawn llvm-lit" )
11576 else ()
11677 find_program (LIT_COMMAND NAMES llvm-lit lit.py lit)
11778 endif ()
79+
11880 find_package (PythonInterp)
81+
11982 add_custom_target (check-xctest
12083 COMMAND
12184 ${CMAKE_COMMAND} -E env
@@ -133,39 +96,13 @@ if(ENABLE_TESTING)
13396 USES_TERMINAL )
13497endif ()
13598
136- string (TOLOWER ${CMAKE_SYSTEM_NAME} swift_os)
137- get_swift_host_arch(swift_host_arch)
13899
100+ get_swift_host_arch(swift_arch)
101+ install (TARGETS XCTest
102+ ARCHIVE DESTINATION lib/swift$<$<NOT :$<BOOL :${BUILD_SHARED_LIBS} >>:_static>/$<LOWER_CASE:${CMAKE_SYSTEM_NAME} >
103+ LIBRARY DESTINATION lib/swift$<$<NOT :$<BOOL :${BUILD_SHARED_LIBS} >>:_static>/$<LOWER_CASE:${CMAKE_SYSTEM_NAME} >
104+ RUNTIME DESTINATION bin)
139105install (FILES
140- ${CMAKE_CURRENT_BINARY_DIR} /swift/XCTest.swiftdoc
141- ${CMAKE_CURRENT_BINARY_DIR} /swift/XCTest.swiftmodule
142- DESTINATION
143- ${CMAKE_INSTALL_FULL_LIBDIR} /swift/${swift_os} /${swift_host_arch} )
144-
145- if (BUILD_SHARED_LIBS )
146- set (library_kind SHARED)
147- set (swift_dir swift)
148- else ()
149- set (library_kind STATIC )
150- set (swift_dir swift_static)
151- endif ()
152-
153- set (XCTest_OUTPUT_FILE
154- ${CMAKE_CURRENT_BINARY_DIR} /${CMAKE_${library_kind} _LIBRARY_PREFIX}XCTest${CMAKE_${library_kind} _LIBRARY_SUFFIX})
155-
156- if (CMAKE_SYSTEM_NAME STREQUAL Windows AND BUILD_SHARED_LIBS )
157- install (FILES
158- ${XCTest_OUTPUT_FILE}
159- DESTINATION
160- ${CMAKE_INSTALL_FULL_BINDIR} )
161- install (FILES
162- ${CMAKE_CURRENT_BINARY_DIR} /${CMAKE_IMPORT_LIBRARY_PREFIX} XCTest${CMAKE_IMPORT_LIBRARY_SUFFIX}
163- DESTINATION
164- ${CMAKE_INSTALL_FULL_LIBDIR} /${swift_dir} /${swift_os} )
165- else ()
166- # NOTE(compnerd) stage a compatibility copy in the swift resource dir
167- install (FILES
168- ${XCTest_OUTPUT_FILE}
169- DESTINATION
170- ${CMAKE_INSTALL_FULL_LIBDIR} /${swift_dir} /${swift_os} )
171- endif ()
106+ ${CMAKE_CURRENT_BINARY_DIR} /swift/XCTest.swiftdoc
107+ ${CMAKE_CURRENT_BINARY_DIR} /swift/XCTest.swiftmodule
108+ DESTINATION lib/swift$<$<NOT :$<BOOL :${BUILD_SHARED_LIBS} >>:_static>/$<LOWER_CASE:${CMAKE_SYSTEM_NAME} >/${swift_arch} )
0 commit comments