@@ -1367,6 +1367,27 @@ function Build-CMakeProject {
1367
1367
Add-KeyValueIfNew $Defines CMAKE_ASM_COMPILER $ASM
1368
1368
Add-KeyValueIfNew $Defines CMAKE_ASM_FLAGS @ (" --target=$ ( $Platform.Triple ) " )
1369
1369
Add-KeyValueIfNew $Defines CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL " /MD"
1370
+
1371
+ if ($DebugInfo ) {
1372
+ $ASMDebugFlags = if ($CDebugFormat -eq " dwarf" ) {
1373
+ if ($UseGNUDriver ) {
1374
+ @ (" -gdwarf" )
1375
+ } else {
1376
+ @ (" -clang:-gdwarf" )
1377
+ }
1378
+ } else {
1379
+ if ($UseGNUDriver ) {
1380
+ @ (" -gcodeview" )
1381
+ } else {
1382
+ @ (" -clang:-gcodeview" )
1383
+ }
1384
+ }
1385
+
1386
+ # CMake does not set a default value for the ASM compiler debug
1387
+ # information format flags with non-MSVC compilers, so we explicitly
1388
+ # set a default here.
1389
+ Add-FlagsDefine $Defines CMAKE_ASM_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_Embedded $ASMDebugFlags
1390
+ }
1370
1391
}
1371
1392
1372
1393
if ($UseASM_MASM ) {
@@ -1506,25 +1527,31 @@ function Build-CMakeProject {
1506
1527
Add-FlagsDefine $Defines CMAKE_Swift_FLAGS_RELWITHDEBINFO " -O"
1507
1528
}
1508
1529
1530
+ $LinkerFlags = if ($UseGNUDriver ) {
1531
+ @ (" -Xlinker" , " /INCREMENTAL:NO" , " -Xlinker" , " /OPT:REF" , " -Xlinker" , " /OPT:ICF" )
1532
+ } else {
1533
+ @ (" /INCREMENTAL:NO" , " /OPT:REF" , " /OPT:ICF" )
1534
+ }
1535
+
1509
1536
if ($DebugInfo ) {
1510
1537
if ($UseASM -or $UseC -or $UseCXX ) {
1511
1538
# Prefer `/Z7` over `/ZI`
1539
+ # By setting the debug information format, the appropriate C/C++
1540
+ # flags will be set for codeview debug information format so there
1541
+ # is no need to set them explicitly above.
1512
1542
Add-KeyValueIfNew $Defines CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded
1513
1543
Add-KeyValueIfNew $Defines CMAKE_POLICY_DEFAULT_CMP0141 NEW
1514
- if ($UseASM ) {
1515
- # The ASM compiler does not support `/Z7` so we use `/Zi` instead.
1516
- Add-FlagsDefine $Defines CMAKE_ASM_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_Embedded " -Zi"
1517
- }
1518
1544
1519
- if ($UseGNUDriver ) {
1520
- Add-FlagsDefine $Defines CMAKE_EXE_LINKER_FLAGS @ (" -Xlinker" , " -debug" )
1521
- Add-FlagsDefine $Defines CMAKE_SHARED_LINKER_FLAGS @ (" -Xlinker" , " -debug" )
1545
+ $LinkerFlags += if ($UseGNUDriver ) {
1546
+ @ (" -Xlinker" , " /DEBUG" )
1522
1547
} else {
1523
- Add-FlagsDefine $Defines CMAKE_EXE_LINKER_FLAGS @ (" /debug" )
1524
- Add-FlagsDefine $Defines CMAKE_SHARED_LINKER_FLAGS @ (" /debug" )
1548
+ @ (" /DEBUG" )
1525
1549
}
1526
1550
}
1527
1551
}
1552
+
1553
+ Add-FlagsDefine $Defines CMAKE_EXE_LINKER_FLAGS $LinkerFlags
1554
+ Add-FlagsDefine $Defines CMAKE_SHARED_LINKER_FLAGS $LinkerFlags
1528
1555
}
1529
1556
1530
1557
Android {
@@ -1542,8 +1569,8 @@ function Build-CMakeProject {
1542
1569
if ($UseC ) {
1543
1570
Add-KeyValueIfNew $Defines CMAKE_C_COMPILER_TARGET $Platform.Triple
1544
1571
1545
- $CFLAGS = @ (" --sysroot=${AndroidSysroot} " )
1546
- if ($DebugInfo -and ( $CDebugFormat -eq " dwarf " ) ) {
1572
+ $CFLAGS = @ (" --sysroot=${AndroidSysroot} " , " -ffunction-sections " , " -fdata-sections " )
1573
+ if ($DebugInfo ) {
1547
1574
$CFLAGS += @ (" -gdwarf" )
1548
1575
}
1549
1576
Add-FlagsDefine $Defines CMAKE_C_FLAGS $CFLAGS
@@ -1552,8 +1579,8 @@ function Build-CMakeProject {
1552
1579
if ($UseCXX ) {
1553
1580
Add-KeyValueIfNew $Defines CMAKE_CXX_COMPILER_TARGET $Platform.Triple
1554
1581
1555
- $CXXFLAGS = @ (" --sysroot=${AndroidSysroot} " )
1556
- if ($DebugInfo -and ( $CDebugFormat -eq " dwarf " ) ) {
1582
+ $CXXFLAGS = @ (" --sysroot=${AndroidSysroot} " , " -ffunction-sections " , " -fdata-sections " )
1583
+ if ($DebugInfo ) {
1557
1584
$CXXFLAGS += @ (" -gdwarf" )
1558
1585
}
1559
1586
Add-FlagsDefine $Defines CMAKE_CXX_FLAGS $CXXFLAGS
@@ -2410,7 +2437,6 @@ function Build-Runtime([Hashtable] $Platform) {
2410
2437
SWIFT_NATIVE_SWIFT_TOOLS_PATH = ([IO.Path ]::Combine((Get-ProjectBinaryCache $BuildPlatform Compilers), " bin" ));
2411
2438
SWIFT_PATH_TO_LIBDISPATCH_SOURCE = " $SourceCache \swift-corelibs-libdispatch" ;
2412
2439
SWIFT_PATH_TO_STRING_PROCESSING_SOURCE = " $SourceCache \swift-experimental-string-processing" ;
2413
- CMAKE_SHARED_LINKER_FLAGS = if ($Platform.OS -eq [OS ]::Windows) { @ (" /INCREMENTAL:NO" , " /OPT:REF" , " /OPT:ICF" ) } else { @ () };
2414
2440
})
2415
2441
}
2416
2442
0 commit comments