@@ -414,7 +414,7 @@ def shell_escape(str):
414
414
415
415
if platform .is_msvc ():
416
416
n .rule ('cxx' ,
417
- command = '$cxx $cflags -c $in /Fo$out' ,
417
+ command = '$cxx $cflags -c $in /Fo$out /Fd' + built ( '$pdb' ) ,
418
418
description = 'CXX $out' ,
419
419
deps = 'msvc' # /showIncludes is included in $cflags.
420
420
)
@@ -485,6 +485,9 @@ def has_re2c():
485
485
n .newline ()
486
486
487
487
n .comment ('Core source files all build into ninja library.' )
488
+ cxxvariables = []
489
+ if platform .is_msvc ():
490
+ cxxvariables = [('pdb' , 'ninja.pdb' )]
488
491
for name in ['build' ,
489
492
'build_log' ,
490
493
'clean' ,
@@ -505,15 +508,15 @@ def has_re2c():
505
508
'string_piece_util' ,
506
509
'util' ,
507
510
'version' ]:
508
- objs += cxx (name )
511
+ objs += cxx (name , variables = cxxvariables )
509
512
if platform .is_windows ():
510
513
for name in ['subprocess-win32' ,
511
514
'includes_normalize-win32' ,
512
515
'msvc_helper-win32' ,
513
516
'msvc_helper_main-win32' ]:
514
- objs += cxx (name )
517
+ objs += cxx (name , variables = cxxvariables )
515
518
if platform .is_msvc ():
516
- objs += cxx ('minidump-win32' )
519
+ objs += cxx ('minidump-win32' , variables = cxxvariables )
517
520
objs += cc ('getopt' )
518
521
else :
519
522
objs += cxx ('subprocess-posix' )
@@ -536,7 +539,7 @@ def has_re2c():
536
539
all_targets = []
537
540
538
541
n .comment ('Main executable is library plus main() function.' )
539
- objs = cxx ('ninja' )
542
+ objs = cxx ('ninja' , variables = cxxvariables )
540
543
ninja = n .build (binary ('ninja' ), 'link' , objs , implicit = ninja_lib ,
541
544
variables = [('libs' , libs )])
542
545
n .newline ()
@@ -551,6 +554,8 @@ def has_re2c():
551
554
n .comment ('Tests all build into ninja_test executable.' )
552
555
553
556
objs = []
557
+ if platform .is_msvc ():
558
+ cxxvariables = [('pdb' , 'ninja_test.pdb' )]
554
559
555
560
for name in ['build_log_test' ,
556
561
'build_test' ,
@@ -569,10 +574,10 @@ def has_re2c():
569
574
'subprocess_test' ,
570
575
'test' ,
571
576
'util_test' ]:
572
- objs += cxx (name )
577
+ objs += cxx (name , variables = cxxvariables )
573
578
if platform .is_windows ():
574
579
for name in ['includes_normalize_test' , 'msvc_helper_test' ]:
575
- objs += cxx (name )
580
+ objs += cxx (name , variables = cxxvariables )
576
581
577
582
ninja_test = n .build (binary ('ninja_test' ), 'link' , objs , implicit = ninja_lib ,
578
583
variables = [('libs' , libs )])
@@ -588,7 +593,9 @@ def has_re2c():
588
593
'hash_collision_bench' ,
589
594
'manifest_parser_perftest' ,
590
595
'clparser_perftest' ]:
591
- objs = cxx (name )
596
+ if platform .is_msvc ():
597
+ cxxvariables = [('pdb' , name + '.pdb' )]
598
+ objs = cxx (name , variables = cxxvariables )
592
599
all_targets += n .build (binary (name ), 'link' , objs ,
593
600
implicit = ninja_lib , variables = [('libs' , libs )])
594
601
0 commit comments