Skip to content

Commit de4c66b

Browse files
authored
Merge pull request #363 from artemcm/TestableCMakeFlag
Attempt to unbreak the build by building SwiftDriver module with `-enable-testing` in CMake.
2 parents 6bede3a + 9b7278f commit de4c66b

File tree

5 files changed

+148
-44
lines changed

5 files changed

+148
-44
lines changed

Tests/SwiftDriverTests/IncrementalCompilationTests.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
import XCTest
1313
import TSCBasic
1414

15-
#if false
16-
// FIXME: Disabled due to @testable import
1715
@testable import SwiftDriver
1816

1917
final class NonincrementalCompilationTests: XCTestCase {
@@ -618,4 +616,3 @@ final class IncrementalCompilationTests: XCTestCase {
618616
try! localFileSystem.writeFileContents(dst, bytes: ByteString(d))
619617
}
620618
}
621-
#endif

Tests/SwiftDriverTests/ModuleDependencyGraphTests.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
import XCTest
14-
15-
#if false
16-
// FIXME: Disabled due to @testable import
1714
@testable import SwiftDriver
1815
import TSCBasic
1916

@@ -1368,4 +1365,3 @@ fileprivate extension Set where Element == ExternalDependency {
13681365
contains(s.asExternal)
13691366
}
13701367
}
1371-
#endif

Tests/SwiftDriverTests/TwoDMapTests.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
#if false
1413
import XCTest
15-
// FIXME: Disabled due to testable import
1614
@testable import SwiftDriver
1715

1816
class TwoDMapTests: XCTestCase {
@@ -108,4 +106,3 @@ class TwoDMapTests: XCTestCase {
108106
}
109107

110108
}
111-
#endif

Tests/SwiftDriverTests/XCTestManifests.swift

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,29 @@ extension ExplicitModuleBuildTests {
2626
]
2727
}
2828

29+
extension IncrementalCompilationTests {
30+
// DO NOT MODIFY: This is autogenerated, use:
31+
// `swift test --generate-linuxmain`
32+
// to regenerate.
33+
static let __allTests__IncrementalCompilationTests = [
34+
("testAutolinkOutputPath", testAutolinkOutputPath),
35+
("testIncremental", testIncremental),
36+
("testIncrementalDiagnostics", testIncrementalDiagnostics),
37+
]
38+
}
39+
40+
extension IntegrationTests {
41+
// DO NOT MODIFY: This is autogenerated, use:
42+
// `swift test --generate-linuxmain`
43+
// to regenerate.
44+
static let __allTests__IntegrationTests = [
45+
("testLitDriverTests", testLitDriverTests),
46+
("testLitDriverValidationTests", testLitDriverValidationTests),
47+
("testLitInterpreterTests", testLitInterpreterTests),
48+
("testLitStdlibTests", testLitStdlibTests),
49+
]
50+
}
51+
2952
extension JobExecutorTests {
3053
// DO NOT MODIFY: This is autogenerated, use:
3154
// `swift test --generate-linuxmain`
@@ -40,6 +63,71 @@ extension JobExecutorTests {
4063
]
4164
}
4265

66+
extension ModuleDependencyGraphTests {
67+
// DO NOT MODIFY: This is autogenerated, use:
68+
// `swift test --generate-linuxmain`
69+
// to regenerate.
70+
static let __allTests__ModuleDependencyGraphTests = [
71+
("testBaselineForPrintsAndCrossType", testBaselineForPrintsAndCrossType),
72+
("testBasicLoad", testBasicLoad),
73+
("testChainedDependents", testChainedDependents),
74+
("testChainedExternal", testChainedExternal),
75+
("testChainedExternalPreMarked", testChainedExternalPreMarked),
76+
("testChainedExternalReverse", testChainedExternalReverse),
77+
("testChainedNoncascadingDependents", testChainedNoncascadingDependents),
78+
("testChainedNoncascadingDependents2", testChainedNoncascadingDependents2),
79+
("testCrossTypeDependency", testCrossTypeDependency),
80+
("testCrossTypeDependencyBaseline", testCrossTypeDependencyBaseline),
81+
("testCrossTypeDependencyBaselineWithFingerprints", testCrossTypeDependencyBaselineWithFingerprints),
82+
("testCrossTypeDependencyWithFingerprints", testCrossTypeDependencyWithFingerprints),
83+
("testDependencyLoops", testDependencyLoops),
84+
("testEnabledTypeBodyFingerprints", testEnabledTypeBodyFingerprints),
85+
("testIndependentDepKinds", testIndependentDepKinds),
86+
("testIndependentDepKinds2", testIndependentDepKinds2),
87+
("testIndependentMembers", testIndependentMembers),
88+
("testIndependentNodes", testIndependentNodes),
89+
("testLoadPassesWithFingerprint", testLoadPassesWithFingerprint),
90+
("testMarkIntransitive", testMarkIntransitive),
91+
("testMarkIntransitiveThenIndirect", testMarkIntransitiveThenIndirect),
92+
("testMarkIntransitiveTwice", testMarkIntransitiveTwice),
93+
("testMarkOneNodeTwice", testMarkOneNodeTwice),
94+
("testMarkOneNodeTwice2", testMarkOneNodeTwice2),
95+
("testMarkTwoNodes", testMarkTwoNodes),
96+
("testMultipleDependentsDifferent", testMultipleDependentsDifferent),
97+
("testMultipleDependentsSame", testMultipleDependentsSame),
98+
("testMutualInterfaceHash", testMutualInterfaceHash),
99+
("testNotTransitiveOnceMarked", testNotTransitiveOnceMarked),
100+
("testReloadDetectsChange", testReloadDetectsChange),
101+
("testSimpleDependent", testSimpleDependent),
102+
("testSimpleDependent2", testSimpleDependent2),
103+
("testSimpleDependent3", testSimpleDependent3),
104+
("testSimpleDependent4", testSimpleDependent4),
105+
("testSimpleDependent5", testSimpleDependent5),
106+
("testSimpleDependent6", testSimpleDependent6),
107+
("testSimpleDependentMember", testSimpleDependentMember),
108+
("testSimpleDependentReverse", testSimpleDependentReverse),
109+
("testSimpleExternal", testSimpleExternal),
110+
("testSimpleExternal2", testSimpleExternal2),
111+
("testUseFingerprints", testUseFingerprints),
112+
]
113+
}
114+
115+
extension NonincrementalCompilationTests {
116+
// DO NOT MODIFY: This is autogenerated, use:
117+
// `swift test --generate-linuxmain`
118+
// to regenerate.
119+
static let __allTests__NonincrementalCompilationTests = [
120+
("testBuildRecordReading", testBuildRecordReading),
121+
("testDateConversion", testDateConversion),
122+
("testExtractSourceFileDependencyGraphFromSwiftModule", testExtractSourceFileDependencyGraphFromSwiftModule),
123+
("testNoIncremental", testNoIncremental),
124+
("testReadAndWriteBuildRecord", testReadAndWriteBuildRecord),
125+
("testReadBinarySourceFileDependencyGraph", testReadBinarySourceFileDependencyGraph),
126+
("testReadComplexSourceFileDependencyGraph", testReadComplexSourceFileDependencyGraph),
127+
("testShowJobLifecycleAndIncremental", testShowJobLifecycleAndIncremental),
128+
]
129+
}
130+
43131
extension ParsableMessageTests {
44132
// DO NOT MODIFY: This is autogenerated, use:
45133
// `swift test --generate-linuxmain`
@@ -193,16 +281,30 @@ extension TripleTests {
193281
]
194282
}
195283

284+
extension TwoDMapTests {
285+
// DO NOT MODIFY: This is autogenerated, use:
286+
// `swift test --generate-linuxmain`
287+
// to regenerate.
288+
static let __allTests__TwoDMapTests = [
289+
("testTwoDMap", testTwoDMap),
290+
]
291+
}
292+
196293
public func __allTests() -> [XCTestCaseEntry] {
197294
return [
198295
testCase(AssertDiagnosticsTests.__allTests__AssertDiagnosticsTests),
199296
testCase(ExplicitModuleBuildTests.__allTests__ExplicitModuleBuildTests),
297+
testCase(IncrementalCompilationTests.__allTests__IncrementalCompilationTests),
298+
testCase(IntegrationTests.__allTests__IntegrationTests),
200299
testCase(JobExecutorTests.__allTests__JobExecutorTests),
300+
testCase(ModuleDependencyGraphTests.__allTests__ModuleDependencyGraphTests),
301+
testCase(NonincrementalCompilationTests.__allTests__NonincrementalCompilationTests),
201302
testCase(ParsableMessageTests.__allTests__ParsableMessageTests),
202303
testCase(PredictableRandomNumberGeneratorTests.__allTests__PredictableRandomNumberGeneratorTests),
203304
testCase(StringAdditionsTests.__allTests__StringAdditionsTests),
204305
testCase(SwiftDriverTests.__allTests__SwiftDriverTests),
205306
testCase(TripleTests.__allTests__TripleTests),
307+
testCase(TwoDMapTests.__allTests__TwoDMapTests),
206308
]
207309
}
208310
#endif

Utilities/build-script-helper.py

Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ def handle_invocation(toolchain_bin, args):
175175
env['SWIFT_DRIVER_' + tool.upper().replace('-','_') + '_EXEC'] = '%s' % (tool_path)
176176
env['SWIFT_EXEC'] = '%sc' % (swift_exec)
177177
test_args = swiftpm_args
178+
test_args += ['-Xswiftc', '-enable-testing']
178179
if should_test_parallel():
179180
test_args += ['--parallel']
180181
swiftpm('test', swift_exec, test_args, env)
@@ -379,12 +380,10 @@ def build_using_cmake(args, toolchain_bin, build_dir):
379380
if args.configuration == 'debug':
380381
swift_flags.append('-Onone')
381382
swift_flags.append('-DDEBUG')
382-
else:
383-
swift_flags.append('-O')
384383

384+
base_cmake_flags = []
385385
for target in targets:
386386
swift_flags.append('-target %s' % target)
387-
base_cmake_flags = ['-DCMAKE_Swift_FLAGS=' + ' '.join(swift_flags)]
388387
if platform.system() == 'Darwin':
389388
base_cmake_flags.append('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target)
390389

@@ -394,17 +393,22 @@ def build_using_cmake(args, toolchain_bin, build_dir):
394393
dependencies_dir = os.path.join(driver_dir, 'dependencies')
395394

396395
# LLBuild
397-
build_llbuild_using_cmake(args, target, swiftc_exec, dependencies_dir, base_cmake_flags)
396+
build_llbuild_using_cmake(args, target, swiftc_exec, dependencies_dir,
397+
base_cmake_flags, swift_flags)
398398
# TSC
399-
build_tsc_using_cmake(args, target, swiftc_exec, dependencies_dir, base_cmake_flags)
399+
build_tsc_using_cmake(args, target, swiftc_exec, dependencies_dir,
400+
base_cmake_flags, swift_flags)
400401
# Argument Parser
401-
build_argument_parser_using_cmake(args, target, swiftc_exec, dependencies_dir, base_cmake_flags)
402+
build_argument_parser_using_cmake(args, target, swiftc_exec, dependencies_dir,
403+
base_cmake_flags, swift_flags)
402404
# Yams
403-
build_yams_using_cmake(args, target, swiftc_exec, dependencies_dir, base_cmake_flags)
405+
build_yams_using_cmake(args, target, swiftc_exec, dependencies_dir,
406+
base_cmake_flags, swift_flags)
404407
# SwiftDriver
405-
build_swift_driver_using_cmake(args, target, swiftc_exec, driver_dir, base_cmake_flags)
408+
build_swift_driver_using_cmake(args, target, swiftc_exec, driver_dir,
409+
base_cmake_flags, swift_flags)
406410

407-
def build_llbuild_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags):
411+
def build_llbuild_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags, swift_flags):
408412
print('Building llbuild for target: %s' % target)
409413
llbuild_source_dir = os.path.join(os.path.dirname(args.package_path), 'llbuild')
410414
llbuild_build_dir = os.path.join(build_dir, 'llbuild')
@@ -426,73 +430,81 @@ def build_llbuild_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_f
426430
# on some machines. This is also Darwin-specific...
427431
if platform.system() == 'Darwin':
428432
llbuild_cmake_flags.append('-DSQLite3_LIBRARY=%s/usr/lib/libsqlite3.tbd' % args.sysroot)
433+
llbuild_swift_flags = swift_flags[:]
429434

430435
# Build only a subset of llbuild (in particular skipping tests)
431-
cmake_build(args, swiftc_exec, llbuild_cmake_flags, llbuild_source_dir, llbuild_build_dir, 'products/all')
436+
cmake_build(args, swiftc_exec, llbuild_cmake_flags, llbuild_swift_flags,
437+
llbuild_source_dir, llbuild_build_dir, 'products/all')
432438

433-
def build_tsc_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags):
439+
def build_tsc_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags, swift_flags):
434440
print('Building TSC for target: %s' % target)
435441
tsc_source_dir = os.path.join(os.path.dirname(args.package_path), 'swift-tools-support-core')
436442
tsc_build_dir = os.path.join(build_dir, 'swift-tools-support-core')
437-
cmake_build(args, swiftc_exec, base_cmake_flags, tsc_source_dir, tsc_build_dir)
443+
tsc_swift_flags = swift_flags[:]
444+
cmake_build(args, swiftc_exec, base_cmake_flags, tsc_swift_flags,
445+
tsc_source_dir, tsc_build_dir)
438446

439-
def build_yams_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags):
447+
def build_yams_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags, swift_flags):
440448
print('Building Yams for target: %s' % target)
441449
yams_source_dir = os.path.join(os.path.dirname(args.package_path), 'yams')
442450
yams_build_dir = os.path.join(build_dir, 'yams')
443-
yams_flags = base_cmake_flags + [
451+
yams_cmake_flags = base_cmake_flags + [
444452
'-DCMAKE_C_COMPILER:=clang',
445453
'-DBUILD_SHARED_LIBS=OFF']
446454

447455
if platform.system() == 'Darwin':
448-
yams_flags.append('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target)
449-
yams_flags.append('-DCMAKE_C_FLAGS=-target %s' % target)
456+
yams_cmake_flags.append('-DCMAKE_OSX_DEPLOYMENT_TARGET=%s' % macos_deployment_target)
457+
yams_cmake_flags.append('-DCMAKE_C_FLAGS=-target %s' % target)
450458
else:
451-
yams_flags.append('-DCMAKE_C_FLAGS=-fPIC -target %s' % target)
459+
yams_cmake_flags.append('-DCMAKE_C_FLAGS=-fPIC -target %s' % target)
452460
if args.dispatch_build_dir:
453-
yams_flags.append(get_dispatch_cmake_arg(args))
461+
yams_cmake_flags.append(get_dispatch_cmake_arg(args))
454462

455463
if args.foundation_build_dir:
456-
yams_flags.append(get_foundation_cmake_arg(args))
457-
458-
cmake_build(args, swiftc_exec, yams_flags, yams_source_dir, yams_build_dir)
464+
yams_cmake_flags.append(get_foundation_cmake_arg(args))
465+
yams_swift_flags = swift_flags[:]
466+
cmake_build(args, swiftc_exec, yams_cmake_flags, yams_swift_flags,
467+
yams_source_dir, yams_build_dir)
459468

460-
def build_argument_parser_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags):
469+
def build_argument_parser_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags, swift_flags):
461470
print('Building Argument Parser for target: %s' % target)
462471
parser_source_dir = os.path.join(os.path.dirname(args.package_path), 'swift-argument-parser')
463472
parser_build_dir = os.path.join(build_dir, 'swift-argument-parser')
464473
custom_flags = ['-DBUILD_TESTING=NO', '-DBUILD_EXAMPLES=NO']
465-
parser_flags = base_cmake_flags + custom_flags
466-
cmake_build(args, swiftc_exec, parser_flags, parser_source_dir, parser_build_dir)
474+
parser_cmake_flags = base_cmake_flags + custom_flags
475+
parser_swift_flags = swift_flags[:]
476+
cmake_build(args, swiftc_exec, parser_cmake_flags, parser_swift_flags,
477+
parser_source_dir, parser_build_dir)
467478
return
468479

469-
def build_swift_driver_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags):
480+
def build_swift_driver_using_cmake(args, target, swiftc_exec, build_dir, base_cmake_flags, swift_flags):
470481
print('Building Swift Driver for target: %s' % target)
471482
driver_source_dir = args.package_path
472483
driver_build_dir = build_dir
473484
dependencies_dir = os.path.join(build_dir, 'dependencies')
474485
# TODO: Enable Library Evolution
475-
swift_flags = ''
486+
driver_swift_flags = swift_flags[:]
476487
flags = [
477488
'-DLLBuild_DIR=' + os.path.join(os.path.join(dependencies_dir, 'llbuild'), 'cmake/modules'),
478489
'-DTSC_DIR=' + os.path.join(os.path.join(dependencies_dir, 'swift-tools-support-core'), 'cmake/modules'),
479490
'-DYams_DIR=' + os.path.join(os.path.join(dependencies_dir, 'yams'), 'cmake/modules'),
480-
'-DArgumentParser_DIR=' + os.path.join(os.path.join(dependencies_dir, 'swift-argument-parser'), 'cmake/modules'),
481-
swift_flags
482-
]
491+
'-DArgumentParser_DIR=' + os.path.join(os.path.join(dependencies_dir, 'swift-argument-parser'), 'cmake/modules')]
492+
#FIXME: Building with testing enable to allow @testable import of SwiftDriver
493+
driver_swift_flags.append('-enable-testing')
483494
driver_cmake_flags = base_cmake_flags + flags
484-
cmake_build(args, swiftc_exec, driver_cmake_flags, driver_source_dir, driver_build_dir)
495+
cmake_build(args, swiftc_exec, driver_cmake_flags, driver_swift_flags,
496+
driver_source_dir, driver_build_dir)
485497

486-
def cmake_build(args, swiftc_exec, cmake_args, source_path, build_dir, ninja_target=None):
498+
def cmake_build(args, swiftc_exec, cmake_args, swift_flags, source_path,
499+
build_dir, ninja_target=None):
487500
"""Configure with CMake and build with Ninja"""
488-
swift_flags = ''
489501
if args.sysroot:
490-
swift_flags = '-sdk %s' % args.sysroot
502+
swift_flags.append('-sdk %s' % args.sysroot)
491503
cmd = [
492504
args.cmake_bin, '-G', 'Ninja',
493505
'-DCMAKE_MAKE_PROGRAM=%s' % args.ninja_bin,
494506
'-DCMAKE_BUILD_TYPE:=Release',
495-
'-DCMAKE_Swift_FLAGS=' + swift_flags,
507+
'-DCMAKE_Swift_FLAGS=' + ' '.join(swift_flags),
496508
'-DCMAKE_Swift_COMPILER:=%s' % (swiftc_exec),
497509
] + cmake_args + [source_path]
498510
if args.verbose:

0 commit comments

Comments
 (0)