@@ -1366,6 +1366,19 @@ function Build-CMakeProject {
1366
1366
Add-KeyValueIfNew $Defines CMAKE_ASM_COMPILER $ASM
1367
1367
Add-KeyValueIfNew $Defines CMAKE_ASM_FLAGS @ (" --target=$ ( $Platform.Triple ) " )
1368
1368
Add-KeyValueIfNew $Defines CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL " /MD"
1369
+
1370
+ if ($DebugInfo ) {
1371
+ $ASMDebugFlags = if ($CDebugFormat -eq " dwarf" ) {
1372
+ if ($UseGNUDriver ) { @ (" -gdwarf" ) } else { @ (" -clang:-gdwarf" ) }
1373
+ } else {
1374
+ if ($UseGNUDriver ) { @ (" -gcodeview" ) } else { @ (" -clang:-gcodeview" ) }
1375
+ }
1376
+
1377
+ # CMake does not set a default value for the ASM compiler debug
1378
+ # information format flags with non-MSVC compilers, so we explicitly
1379
+ # set a default here.
1380
+ Add-FlagsDefine $Defines CMAKE_ASM_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_Embedded $ASMDebugFlags
1381
+ }
1369
1382
}
1370
1383
1371
1384
if ($UseASM_MASM ) {
@@ -1505,25 +1518,31 @@ function Build-CMakeProject {
1505
1518
Add-FlagsDefine $Defines CMAKE_Swift_FLAGS_RELWITHDEBINFO " -O"
1506
1519
}
1507
1520
1521
+ $LinkerFlags = if ($UseGNUDriver ) {
1522
+ @ (" -Xlinker" , " /INCREMENTAL:NO" , " -Xlinker" , " /OPT:REF" , " -Xlinker" , " /OPT:ICF" )
1523
+ } else {
1524
+ @ (" /INCREMENTAL:NO" , " /OPT:REF" , " /OPT:ICF" )
1525
+ }
1526
+
1508
1527
if ($DebugInfo ) {
1509
1528
if ($UseASM -or $UseC -or $UseCXX ) {
1510
1529
# Prefer `/Z7` over `/ZI`
1530
+ # By setting the debug information format, the appropriate C/C++
1531
+ # flags will be set for codeview debug information format so there
1532
+ # is no need to set them explicitly above.
1511
1533
Add-KeyValueIfNew $Defines CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded
1512
1534
Add-KeyValueIfNew $Defines CMAKE_POLICY_DEFAULT_CMP0141 NEW
1513
- if ($UseASM ) {
1514
- # The ASM compiler does not support `/Z7` so we use `/Zi` instead.
1515
- Add-FlagsDefine $Defines CMAKE_ASM_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_Embedded " -Zi"
1516
- }
1517
1535
1518
- if ($UseGNUDriver ) {
1519
- Add-FlagsDefine $Defines CMAKE_EXE_LINKER_FLAGS @ (" -Xlinker" , " -debug" )
1520
- Add-FlagsDefine $Defines CMAKE_SHARED_LINKER_FLAGS @ (" -Xlinker" , " -debug" )
1536
+ $LinkerFlags += if ($UseGNUDriver ) {
1537
+ @ (" -Xlinker" , " /DEBUG" )
1521
1538
} else {
1522
- Add-FlagsDefine $Defines CMAKE_EXE_LINKER_FLAGS @ (" /debug" )
1523
- Add-FlagsDefine $Defines CMAKE_SHARED_LINKER_FLAGS @ (" /debug" )
1539
+ @ (" /DEBUG" )
1524
1540
}
1525
1541
}
1526
1542
}
1543
+
1544
+ Add-FlagsDefine $Defines CMAKE_EXE_LINKER_FLAGS $LinkerFlags
1545
+ Add-FlagsDefine $Defines CMAKE_SHARED_LINKER_FLAGS $LinkerFlags
1527
1546
}
1528
1547
1529
1548
Android {
@@ -1541,8 +1560,8 @@ function Build-CMakeProject {
1541
1560
if ($UseC ) {
1542
1561
Add-KeyValueIfNew $Defines CMAKE_C_COMPILER_TARGET $Platform.Triple
1543
1562
1544
- $CFLAGS = @ (" --sysroot=${AndroidSysroot} " )
1545
- if ($DebugInfo -and ( $CDebugFormat -eq " dwarf " ) ) {
1563
+ $CFLAGS = @ (" --sysroot=${AndroidSysroot} " , " -ffunction-sections " , " -fdata-sections " )
1564
+ if ($DebugInfo ) {
1546
1565
$CFLAGS += @ (" -gdwarf" )
1547
1566
}
1548
1567
Add-FlagsDefine $Defines CMAKE_C_FLAGS $CFLAGS
@@ -1551,8 +1570,8 @@ function Build-CMakeProject {
1551
1570
if ($UseCXX ) {
1552
1571
Add-KeyValueIfNew $Defines CMAKE_CXX_COMPILER_TARGET $Platform.Triple
1553
1572
1554
- $CXXFLAGS = @ (" --sysroot=${AndroidSysroot} " )
1555
- if ($DebugInfo -and ( $CDebugFormat -eq " dwarf " ) ) {
1573
+ $CXXFLAGS = @ (" --sysroot=${AndroidSysroot} " , " -ffunction-sections " , " -fdata-sections " )
1574
+ if ($DebugInfo ) {
1556
1575
$CXXFLAGS += @ (" -gdwarf" )
1557
1576
}
1558
1577
Add-FlagsDefine $Defines CMAKE_CXX_FLAGS $CXXFLAGS
@@ -2417,7 +2436,6 @@ function Build-Runtime([Hashtable] $Platform) {
2417
2436
SWIFT_NATIVE_SWIFT_TOOLS_PATH = ([IO.Path ]::Combine((Get-ProjectBinaryCache $BuildPlatform Compilers), " bin" ));
2418
2437
SWIFT_PATH_TO_LIBDISPATCH_SOURCE = " $SourceCache \swift-corelibs-libdispatch" ;
2419
2438
SWIFT_PATH_TO_STRING_PROCESSING_SOURCE = " $SourceCache \swift-experimental-string-processing" ;
2420
- CMAKE_SHARED_LINKER_FLAGS = if ($Platform.OS -eq [OS ]::Windows) { @ (" /INCREMENTAL:NO" , " /OPT:REF" , " /OPT:ICF" ) } else { @ () };
2421
2439
})
2422
2440
}
2423
2441
@@ -2874,7 +2892,7 @@ function Test-XCTest {
2874
2892
- Src $SourceCache \swift- corelibs- xctest `
2875
2893
- Bin (Get-ProjectBinaryCache $BuildPlatform XCTest) `
2876
2894
- Platform $BuildPlatform `
2877
- - UseBuiltCompilers Swift `
2895
+ - UseBuiltCompilers C , CXX , Swift `
2878
2896
- SwiftSDK $null `
2879
2897
- BuildTargets default , check- xctest `
2880
2898
- Defines @ {
0 commit comments