1
1
2
- cmake_minimum_required (VERSION 3.4.3 )
2
+ cmake_minimum_required (VERSION 3.15.1 )
3
3
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 )
6
5
7
- project (XCTest
8
- LANGUAGES
9
- C )
10
-
11
- enable_testing ()
12
- option (ENABLE_TESTING "Build tests" YES )
6
+ project (XCTest LANGUAGES Swift )
13
7
14
8
option (BUILD_SHARED_LIBS "Build shared libraries" ON )
15
9
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 )
18
55
19
- option (XCTEST_PATH_TO_FOUNDATION_BUILD "Path to Foundation build" "" )
20
56
21
57
if (ENABLE_TESTING )
58
+ enable_testing ()
59
+
22
60
find_package (LLVM CONFIG )
23
61
if (LLVM_FOUND )
24
62
message (STATUS "Found LLVM ${LLVM_PACKAGE_VERSION} " )
@@ -31,91 +69,16 @@ if(ENABLE_TESTING)
31
69
elseif (NOT DEFINED LLVM_MAIN_SRC_DIR OR NOT EXISTS ${LLVM_MAIN_SRC_DIR} )
32
70
message (SEND_ERROR "LLVM not found and LLVM_MAIN_SRC_DIR not defined - required for testing" )
33
71
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 ()
43
72
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 )
112
73
if (EXISTS ${LLVM_MAIN_SRC_DIR} /utils/lit/lit.py )
113
74
set (LIT_COMMAND "${LLVM_MAIN_SRC_DIR} /utils/lit/lit.py"
114
75
CACHE STRING "command used to spawn llvm-lit" )
115
76
else ()
116
77
find_program (LIT_COMMAND NAMES llvm-lit lit.py lit )
117
78
endif ()
79
+
118
80
find_package (PythonInterp )
81
+
119
82
add_custom_target (check-xctest
120
83
COMMAND
121
84
${CMAKE_COMMAND} -E env
@@ -133,39 +96,13 @@ if(ENABLE_TESTING)
133
96
USES_TERMINAL )
134
97
endif ()
135
98
136
- string (TOLOWER ${CMAKE_SYSTEM_NAME} swift_os )
137
- get_swift_host_arch (swift_host_arch )
138
99
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 )
139
105
install (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