Browse Source

fix probs w/pdb files

cxgeorge 24 years ago
parent
commit
cd853a556d
3 changed files with 17 additions and 16 deletions
  1. 2 10
      dtool/pptempl/Global.msvc.pp
  2. 13 5
      dtool/pptempl/Template.msvc.pp
  3. 2 1
      dtool/pptempl/compilerSettings.pp

+ 2 - 10
dtool/pptempl/Global.msvc.pp

@@ -74,22 +74,14 @@
   #define dlllib dll
   #define dlllib dll
 #endif
 #endif
 
 
+// NO_PCH is just a user override, if it is false, 
+// we still only do pch on dirs that request it
 #if $[eq $[NO_PCH],]
 #if $[eq $[NO_PCH],]
 #define DO_PCH 1
 #define DO_PCH 1
 #endif
 #endif
 
 
 #define CFLAGS_SHARED
 #define CFLAGS_SHARED
 
 
-#if $[NO_PCH]
-// different .pdb for every .obj  
-// we can probably just use the second case for everything built w/nmake
-// but I dont want to risk changing it right now, so only change pch case
-#defer DEBUG_TYPE_FLAGS /Zi /Fd"$[osfilename $[target:%.obj=%.pdb]]"
-#else
-// for pch, .pdb file name must be the same for obj and pch header obj
-#defer DEBUG_TYPE_FLAGS /Zi /Fd"$[osfilename $[pdb_filename].pdb]"
-#endif
-
 #include $[THISDIRPREFIX]compilerSettings.pp
 #include $[THISDIRPREFIX]compilerSettings.pp
 
 
 #define WARNING_LEVEL_FLAG /W3
 #define WARNING_LEVEL_FLAG /W3

+ 13 - 5
dtool/pptempl/Template.msvc.pp

@@ -728,7 +728,6 @@ $[TAB] $[COMPILE_C]
 #define source $[file]
 #define source $[file]
 #define ipath $[file_ipath]
 #define ipath $[file_ipath]
 
 
-#define pdb_filename $[st_dir]/$[TARGET(lib_target)]
 
 
 #if $[DO_PCH]
 #if $[DO_PCH]
 // best way to find out if file use pch (and needs /Yu) is to check dependencies
 // best way to find out if file use pch (and needs /Yu) is to check dependencies
@@ -736,10 +735,14 @@ $[TAB] $[COMPILE_C]
 #define target_pch $[subst \./,\,$[patsubst %.h,$[so_dir]\%.pch,$[filter %_headers.h, $[dependencies $[file]]]]]
 #define target_pch $[subst \./,\,$[patsubst %.h,$[so_dir]\%.pch,$[filter %_headers.h, $[dependencies $[file]]]]]
 #endif
 #endif
 
 
+// COMPILE_LINE uses flags which uses pdb_filename
+
 #define flags $[c++flags] $[CFLAGS_SHARED] $[all_sources $[building_var:%=/D%],$[file]]
 #define flags $[c++flags] $[CFLAGS_SHARED] $[all_sources $[building_var:%=/D%],$[file]]
 
 
 #if $[target_pch]
 #if $[target_pch]
-#define COMPILE_LINE $[COMPILE_C_WITH_PCH]
+// for pch, pch .pdb filename must match .obj filename
+#define pdb_filename $[osfilename $[so_dir]/$[TARGET(lib_target)]]  // assumes pch only occurs in lib_target scope, not metalib_target or in interrogate
+#define COMPILE_LINE $[patsubst /Fd%, /Fd"$[pdb_filename].pdb",$[COMPILE_C_WITH_PCH]]
 #else
 #else
 #define COMPILE_LINE $[COMPILE_C++]
 #define COMPILE_LINE $[COMPILE_C++]
 #endif
 #endif
@@ -759,7 +762,7 @@ $[TAB] $[COMPILE_LINE]
 #define source $[file]
 #define source $[file]
 #define ipath $[file_ipath]
 #define ipath $[file_ipath]
 
 
-#define pdb_filename $[st_dir]/$[TARGET(lib_target)]
+#define pdb_filename $[st_dir]/$[TARGET(lib_target metalib_target)]
 
 
 #if $[DO_PCH]
 #if $[DO_PCH]
 // best way to find out if file use pch (and needs /Yu) is to check dependencies
 // best way to find out if file use pch (and needs /Yu) is to check dependencies
@@ -770,7 +773,9 @@ $[TAB] $[COMPILE_LINE]
 #define flags $[c++flags] $[all_sources $[building_var:%=/D%],$[file]]
 #define flags $[c++flags] $[all_sources $[building_var:%=/D%],$[file]]
 
 
 #if $[target_pch]
 #if $[target_pch]
-#define COMPILE_LINE $[COMPILE_C_WITH_PCH]
+// for pch, pch .pdb filename must match .obj filename
+#define pdb_filename $[osfilename $[st_dir]/$[TARGET(lib_target)]]  // assumes pch only occurs in lib_target scope, not metalib_target or in interrogate
+#define COMPILE_LINE $[patsubst /Fd%, /Fd"$[pdb_filename].pdb",$[COMPILE_C_WITH_PCH]]
 #else
 #else
 #define COMPILE_LINE $[COMPILE_C++]
 #define COMPILE_LINE $[COMPILE_C++]
 #endif
 #endif
@@ -787,11 +792,14 @@ $[TAB] $[COMPILE_LINE]
 #foreach file $[pch_header_source]
 #foreach file $[pch_header_source]
 #define target_pch $[patsubst %.h,$[st_dir]\%.pch,$[file]]
 #define target_pch $[patsubst %.h,$[st_dir]\%.pch,$[file]]
 #define target_obj $[patsubst %.h,$[st_dir]\%.obj,$[file]]
 #define target_obj $[patsubst %.h,$[st_dir]\%.obj,$[file]]
-#define pdb_filename $[st_dir]/$[TARGET(lib_target)]
 #define target $[target_obj]
 #define target $[target_obj]
 #define source $[file]
 #define source $[file]
 #define ipath $[file_ipath]
 #define ipath $[file_ipath]
 #define flags $[c++flags] $[CFLAGS_SHARED] $[all_sources $[building_var:%=/D%],$[file]]
 #define flags $[c++flags] $[CFLAGS_SHARED] $[all_sources $[building_var:%=/D%],$[file]]
+
+#define pdb_filename $[osfilename $[st_dir]/$[TARGET(lib_target)]]  // assumes pch only occurs in lib_target scope, not metalib_target or in interrogate
+#define COMPILE_CXXSTYLE_PCH $[patsubst /Fd%, /Fd"$[pdb_filename].pdb",$[COMPILE_CXXSTYLE_PCH]]
+
 // Yacc must run before some files can be compiled, so all files
 // Yacc must run before some files can be compiled, so all files
 // depend on yacc having run.
 // depend on yacc having run.
 $[target_obj] : $[source] $[dependencies $[file]]
 $[target_obj] : $[source] $[dependencies $[file]]

+ 2 - 1
dtool/pptempl/compilerSettings.pp

@@ -7,7 +7,8 @@
   #define OPTFLAGS /O2 /Ob1 /G6
   #define OPTFLAGS /O2 /Ob1 /G6
   #define OPT1FLAGS /GZ 
   #define OPT1FLAGS /GZ 
   
   
-  #defer DEBUGFLAGS /MDd $[BROWSEINFO_FLAG] $[DEBUG_TYPE_FLAGS]
+//  #defer DEBUGFLAGS /MDd $[BROWSEINFO_FLAG] $[DEBUG_TYPE_FLAGS]
+  #defer DEBUGFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[target:%.obj=%.pdb]]"  
   #define RELEASEFLAGS /MD
   #define RELEASEFLAGS /MD
   
   
 // in case we have mixed intel/msvc build
 // in case we have mixed intel/msvc build