Browse Source

*** empty log message ***

David Rose 25 years ago
parent
commit
b51683f7ea

+ 75 - 16
dtool/pptempl/Global.gmsvc.pp

@@ -59,19 +59,63 @@
 #define BROWSEINFO_FLAG
 #endif
 
-#defer CFLAGS_SHARED
-#defer OPTFLAGS /O2 /Ob1 /Ogity /G6
-//#defer OPTFLAGS /O2 /G6  (this is actually equivalent to above)
+// Define LINK_ALL_STATIC to generate static libs instead of DLL's.
+#if $[LINK_ALL_STATIC]
+  #define dlink_all_static LINK_ALL_STATIC
+  #define build_dlls
+  #define dlllib lib
+#else
+  #define dlink_all_static
+  #define build_dlls yes
+  #define dlllib dll
+#endif
+
+#define CFLAGS_SHARED
+
+#if $[eq $[USE_COMPILER], MSVC]
+  #define COMPILER cl
+  #define LINKER link
+  #define LIBBER lib
+  #define COMMONFLAGS /Gi-
+  #define OPTFLAGS /O2 /Ob1 /Ogity /G6
+  #defer DEBUGFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[target:%.obj=%.pdb]]"
+  #define RELEASEFLAGS /MD
+  #define EXTRA_LIBPATH
+
+#elif $[eq $[USE_COMPILER], BOUNDS]
+  #define COMPILER nmcl
+  #define LINKER nmlink
+  #define LIBBER lib
+  #define COMMONFLAGS
+  #define OPTFLAGS /O2 /Ogity /G6
+  #defer DEBUGFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[target:%.obj=%.pdb]]"
+  #define RELEASEFLAGS /MD
+  #define EXTRA_LIBPATH
+
+#elif $[eq $[USE_COMPILER], INTEL]
+  #define COMPILER icl
+  #define LINKER xilink
+  #define LIBBER xilib
+  #define COMMONFLAGS /Gi-
+  #define OPTFLAGS /O3 /Ob1 /Ogity /G6 /Qip
+  #define DEBUGFLAGS /MDd /Zi $[BROWSEINFO_FLAG]
+  #define RELEASEFLAGS /MD
+  // We assume the Intel compiler installation dir is mounted as /ia32.
+  #define EXTRA_LIBPATH /ia32/lib
+
+#else
+  #error Invalid value specified for USE_COMPILER.
+#endif
 
-#defer CDEFINES_OPT1 _DEBUG
-#defer CDEFINES_OPT2 _DEBUG
-#defer CDEFINES_OPT3
-#defer CDEFINES_OPT4 NDEBUG
+#defer CDEFINES_OPT1 _DEBUG $[dlink_all_static]
+#defer CDEFINES_OPT2 _DEBUG $[dlink_all_static]
+#defer CDEFINES_OPT3 $[dlink_all_static]
+#defer CDEFINES_OPT4 NDEBUG $[dlink_all_static]
 
-#defer CFLAGS_OPT1 $[CDEFINES_OPT1:%=/D%] /MDd /Gi- /GZ /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[target:%.obj=%.pdb]]"
-#defer CFLAGS_OPT2 $[CDEFINES_OPT2:%=/D%] /MDd /Gi- /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[target:%.obj=%.pdb]]"
-#defer CFLAGS_OPT3 $[CDEFINES_OPT3:%=/D%] /MD /Gi-
-#defer CFLAGS_OPT4 $[CDEFINES_OPT4:%=/D%] /MD /Gi-
+#defer CFLAGS_OPT1 $[CDEFINES_OPT1:%=/D%] $[COMMONFLAGS] $[DEBUGFLAGS]
+#defer CFLAGS_OPT2 $[CDEFINES_OPT2:%=/D%] $[COMMONFLAGS] $[DEBUGFLAGS] $[OPTFLAGS]
+#defer CFLAGS_OPT3 $[CDEFINES_OPT3:%=/D%] $[COMMONFLAGS] $[RELEASEFLAGS] $[OPTFLAGS]
+#defer CFLAGS_OPT4 $[CDEFINES_OPT4:%=/D%] $[COMMONFLAGS] $[RELEASEFLAGS] $[OPTFLAGS]
 
 #if $[ENABLE_PROFILING]
 // note according to docs, this should force /PDB:none /DEBUGTYPE:cv, so no pdb file is generated for debug??  (doesnt seem to be true)
@@ -86,6 +130,14 @@
 #defer LDFLAGS_OPT3 /fixed:no /incremental:no /NODEFAULTLIB:MSVCRTD.LIB /WARN:3 $[PROFILE_FLAG] /OPT:REF
 #defer LDFLAGS_OPT4 /fixed:no /incremental:no /NODEFAULTLIB:MSVCRTD.LIB /WARN:3 $[PROFILE_FLAG] /OPT:REF
 
+// $[build_pdbs] will be nonempty (true) if we should expect to
+// generate a .pdb file when we build a DLL or EXE.
+#if $[and $[eq $[USE_COMPILER], MSVC],$[<= $[OPTIMIZE],2]]
+  #define build_pdbs yes
+#else
+  #define build_pdbs
+#endif
+
 // $[dllext] will be "_d" for debug builds, and empty for non-debug
 // builds.  This is the extra bit of stuff we tack on to the end of a
 // dll name.  We name the debug dll's file_d.dll, partly to be
@@ -105,16 +157,23 @@
 
 #defer extra_cflags /EHsc /Zm250 /DWIN32_VC /DWIN32 $[WARNING_LEVEL_FLAG]
 
-#defer COMPILE_C cl /nologo /c /Fo"$[osfilename $[target]]" $[decygwin %,/I"%",$[ipath]] $[flags] $[extra_cflags] $[source]
+#defer COMPILE_C $[COMPILER] /nologo /c /Fo"$[osfilename $[target]]" $[decygwin %,/I"%",$[ipath]] $[flags] $[extra_cflags] $[source]
 #defer COMPILE_C++ $[COMPILE_C]
 
-#defer STATIC_LIB_C lib /nologo $[sources] /OUT:"$[osfilename $[target]]" 
+#defer STATIC_LIB_C $[LIBBER] /nologo $[sources] /OUT:"$[osfilename $[target]]" 
 #defer STATIC_LIB_C++ $[STATIC_LIB_C]
 
 //#defer ver_resource $[directory]\ver.res
-//#defer SHARED_LIB_C link /nologo /dll /VERBOSE:LIB $[LDFLAGS_OPT$[OPTIMIZE]] /OUT:"$[osfilename $[target]]" $[sources] $[decygwin %,/LIBPATH:"%",$[lpath]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]] 
-#defer SHARED_LIB_C link /nologo /dll  $[LDFLAGS_OPT$[OPTIMIZE]] /OUT:"$[osfilename $[target]]" $[sources] $[decygwin %,/LIBPATH:"%",$[lpath]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]] 
+//#defer SHARED_LIB_C $[LINKER] /nologo /dll /VERBOSE:LIB $[LDFLAGS_OPT$[OPTIMIZE]] /OUT:"$[osfilename $[target]]" $[sources] $[decygwin %,/LIBPATH:"%",$[lpath]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]] 
+#defer SHARED_LIB_C $[LINKER] /nologo /dll  $[LDFLAGS_OPT$[OPTIMIZE]] /OUT:"$[osfilename $[target]]" $[sources] $[decygwin %,/LIBPATH:"%",$[lpath]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]] 
 #defer SHARED_LIB_C++ $[SHARED_LIB_C]
 
-#defer LINK_BIN_C link /nologo $[LDFLAGS_OPT$[OPTIMIZE]] $[sources] $[decygwin %,/LIBPATH:"%",$[lpath]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]] /OUT:"$[osfilename $[target]]"
+#defer LINK_BIN_C $[LINKER] /nologo $[LDFLAGS_OPT$[OPTIMIZE]] $[sources] $[decygwin %,/LIBPATH:"%",$[lpath]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]] /OUT:"$[osfilename $[target]]"
 #defer LINK_BIN_C++ $[LINK_BIN_C]
+
+#if $[LINK_ALL_STATIC]
+  #defer SHARED_LIB_C $[STATIC_LIB_C]
+  #defer SHARED_LIB_C++ $[STATIC_LIB_C++]
+  #defer ODIR_SHARED $[ODIR_STATIC]
+#endif
+

+ 21 - 6
dtool/pptempl/Global.msvc.pp

@@ -82,7 +82,7 @@
   #define LIBBER lib
   #define COMMONFLAGS /Gi-
   #define OPTFLAGS /O2 /Ob1 /Ogity /G6
-  #define DEBUGFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[target:%.obj=%.pdb]]"
+  #defer DEBUGFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[target:%.obj=%.pdb]]"
   #define RELEASEFLAGS /MD
   #define EXTRA_LIBPATH
 
@@ -92,7 +92,7 @@
   #define LIBBER lib
   #define COMMONFLAGS
   #define OPTFLAGS /O2 /Ogity /G6
-  #define DEBUGFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[target:%.obj=%.pdb]]"
+  #defer DEBUGFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[target:%.obj=%.pdb]]"
   #define RELEASEFLAGS /MD
   #define EXTRA_LIBPATH
 
@@ -121,11 +121,26 @@
 #defer CFLAGS_OPT3 $[CDEFINES_OPT3:%=/D%] $[COMMONFLAGS] $[RELEASEFLAGS] $[OPTFLAGS]
 #defer CFLAGS_OPT4 $[CDEFINES_OPT4:%=/D%] $[COMMONFLAGS] $[RELEASEFLAGS] $[OPTFLAGS]
 
+#if $[ENABLE_PROFILING]
+// note according to docs, this should force /PDB:none /DEBUGTYPE:cv, so no pdb file is generated for debug??  (doesnt seem to be true)
+#define PROFILE_FLAG /PROFILE
+#else
+#define PROFILE_FLAG 
+#endif
+
 // NODEFAULTLIB ensures static libs linked in will connect to the correct msvcrt, so no debug/release mixing occurs
-#defer LDFLAGS_OPT1 /debug /incremental:no /NODEFAULTLIB:MSVCRT.LIB /WARN:3
-#defer LDFLAGS_OPT2 /debug /incremental:no /NODEFAULTLIB:MSVCRT.LIB /WARN:3
-#defer LDFLAGS_OPT3 /fixed:no /incremental:no /NODEFAULTLIB:MSVCRTD.LIB /WARN:3 /OPT:REF
-#defer LDFLAGS_OPT4 /fixed:no /incremental:no /NODEFAULTLIB:MSVCRTD.LIB /WARN:3 /OPT:REF
+#defer LDFLAGS_OPT1 /debug /incremental:no /NODEFAULTLIB:MSVCRT.LIB /WARN:3 $[PROFILE_FLAG]
+#defer LDFLAGS_OPT2 /debug /incremental:no /NODEFAULTLIB:MSVCRT.LIB /WARN:3 $[PROFILE_FLAG]
+#defer LDFLAGS_OPT3 /fixed:no /incremental:no /NODEFAULTLIB:MSVCRTD.LIB /WARN:3 $[PROFILE_FLAG] /OPT:REF
+#defer LDFLAGS_OPT4 /fixed:no /incremental:no /NODEFAULTLIB:MSVCRTD.LIB /WARN:3 $[PROFILE_FLAG] /OPT:REF
+
+// $[build_pdbs] will be nonempty (true) if we should expect to
+// generate a .pdb file when we build a DLL or EXE.
+#if $[and $[eq $[USE_COMPILER], MSVC],$[<= $[OPTIMIZE],2]]
+  #define build_pdbs yes
+#else
+  #define build_pdbs
+#endif
 
 // $[dllext] will be "_d" for debug builds, and empty for non-debug
 // builds.  This is the extra bit of stuff we tack on to the end of a

+ 29 - 1
dtool/pptempl/Template.gmsvc.pp

@@ -360,7 +360,12 @@ $[varname] = $[sources]
   #endif
 
 
+#if $[build_dlls]
 $[so_dir]/lib$[TARGET]$[dllext].lib : $[so_dir]/lib$[TARGET]$[dllext].dll
+#endif
+#if $[build_pdbs]
+$[so_dir]/lib$[TARGET]$[dllext].pdb : $[so_dir]/lib$[TARGET]$[dllext].dll
+#endif
 
 #endif
 
@@ -368,8 +373,9 @@ $[so_dir]/lib$[TARGET]$[dllext].lib : $[so_dir]/lib$[TARGET]$[dllext].dll
 // everything that goes along with it.
 #define installed_files \
     $[if $[build_it], \
-      $[install_lib_dir]/lib$[TARGET]$[dllext].dll \
+      $[if $[build_dlls],$[install_lib_dir]/lib$[TARGET]$[dllext].dll] \
       $[install_lib_dir]/lib$[TARGET]$[dllext].lib \
+      $[if $[and $[build_dlls],$[build_pdbs]],$[install_lib_dir]/lib$[TARGET]$[dllext].pdb] \
     ] \
     $[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
     $[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
@@ -384,16 +390,25 @@ uninstall-lib$[TARGET] :
 	rm -f $[sort $[installed_files]]
 #endif
 
+#if $[build_dlls]
 $[install_lib_dir]/lib$[TARGET]$[dllext].dll : $[so_dir]/lib$[TARGET]$[dllext].dll $[so_dir]/stamp
 #define local lib$[TARGET]$[dllext].dll
 #define dest $[install_lib_dir]
 	cp -f $[so_dir]/$[local] $[dest]
+#endif
 
 $[install_lib_dir]/lib$[TARGET]$[dllext].lib : $[so_dir]/lib$[TARGET]$[dllext].lib $[so_dir]/stamp
 #define local lib$[TARGET]$[dllext].lib
 #define dest $[install_lib_dir]
 	cp -f $[so_dir]/$[local] $[dest]
 
+#if $[and $[build_dlls],$[build_pdbs]]
+$[install_lib_dir]/lib$[TARGET]$[dllext].pdb : $[so_dir]/lib$[TARGET]$[dllext].pdb $[so_dir]/stamp
+#define local lib$[TARGET]$[dllext].pdb
+#define dest $[install_lib_dir]
+	cp -f $[so_dir]/$[local] $[dest]
+#endif
+
 #if $[igatescan]
 // Now, some additional rules to generate and compile the interrogate
 // data, if needed.
@@ -475,7 +490,12 @@ $[target] : $[sources] $[so_dir]/stamp
 	$[SHARED_LIB_C]
 #endif
 
+#if $[build_dlls]
 $[so_dir]/lib$[TARGET]$[dllext].lib : $[so_dir]/lib$[TARGET]$[dllext].dll
+#endif
+#if $[build_pdbs]
+$[so_dir]/lib$[TARGET]$[dllext].pdb : $[so_dir]/lib$[TARGET]$[dllext].dll
+#endif
 
 #end noinst_lib_target
 
@@ -584,6 +604,7 @@ $[target] : $[sources] $[st_dir]/stamp
 
 #define installed_files \
     $[install_bin_dir]/$[TARGET].exe \
+    $[if $[build_pdbs],$[install_bin_dir]/$[TARGET].pdb] \
     $[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
     $[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
     $[INSTALL_DATA:%=$[install_data_dir]/%] \
@@ -601,6 +622,13 @@ $[install_bin_dir]/$[TARGET].exe : $[st_dir]/$[TARGET].exe $[st_dir]/stamp
 #define dest $[install_bin_dir]
 	cp -f $[st_dir]/$[local] $[dest]
 
+#if $[build_pdbs]
+$[install_bin_dir]/$[TARGET].pdb : $[st_dir]/$[TARGET].pdb $[st_dir]/stamp
+#define local $[TARGET].pdb
+#define dest $[install_bin_dir]
+	cp -f $[st_dir]/$[local] $[dest]
+#endif
+
 #end bin_target
 
 

+ 22 - 0
dtool/pptempl/Template.msvc.pp

@@ -339,6 +339,9 @@ $[target] : $[sources] "$[dtool_ver_dir]\version.rc"
 #if $[build_dlls]
 $[so_dir]\lib$[TARGET]$[dllext].lib : $[so_dir]\lib$[TARGET]$[dllext].dll
 #endif
+#if $[build_pdbs]
+$[so_dir]\lib$[TARGET]$[dllext].pdb : $[so_dir]\lib$[TARGET]$[dllext].dll
+#endif
 
 #endif
 
@@ -348,6 +351,7 @@ $[so_dir]\lib$[TARGET]$[dllext].lib : $[so_dir]\lib$[TARGET]$[dllext].dll
     $[if $[build_it], \
       $[if $[build_dlls],$[install_lib_dir]\lib$[TARGET]$[dllext].dll] \
       $[install_lib_dir]\lib$[TARGET]$[dllext].lib \
+      $[if $[and $[build_dlls],$[build_pdbs]],$[install_lib_dir]\lib$[TARGET]$[dllext].pdb] \
     ] \
     $[INSTALL_SCRIPTS:%=$[install_bin_dir]\%] \
     $[INSTALL_HEADERS:%=$[install_headers_dir]\%] \
@@ -374,6 +378,13 @@ $[install_lib_dir]\lib$[TARGET]$[dllext].lib : $[so_dir]\lib$[TARGET]$[dllext].l
 #define dest $[install_lib_dir]
 	copy $[so_dir]\$[local] $[dest]
 
+#if $[and $[build_dlls],$[build_pdbs]]
+$[install_lib_dir]\lib$[TARGET]$[dllext].pdb : $[so_dir]\lib$[TARGET]$[dllext].pdb
+#define local lib$[TARGET]$[dllext].pdb
+#define dest $[install_lib_dir]
+	copy $[so_dir]\$[local] $[dest]
+#endif
+
 #if $[igatescan]
 // Now, some additional rules to generate and compile the interrogate
 // data, if needed.
@@ -455,6 +466,9 @@ $[target] : $[sources]
 #if $[build_dlls]
 $[so_dir]\lib$[TARGET]$[dllext].lib : $[so_dir]\lib$[TARGET]$[dllext].dll
 #endif
+#if $[build_pdbs]
+$[so_dir]\lib$[TARGET]$[dllext].pdb : $[so_dir]\lib$[TARGET]$[dllext].dll
+#endif
 
 #end noinst_lib_target
 
@@ -564,6 +578,7 @@ $[target] : $[sources]
 
 #define installed_files \
     $[install_bin_dir]\$[TARGET].exe \
+    $[if $[build_pdbs],$[install_bin_dir]\$[TARGET].pdb] \
     $[INSTALL_SCRIPTS:%=$[install_bin_dir]\%] \
     $[INSTALL_HEADERS:%=$[install_headers_dir]\%] \
     $[INSTALL_DATA:%=$[install_data_dir]\%] \
@@ -581,6 +596,13 @@ $[install_bin_dir]\$[TARGET].exe : $[st_dir]\$[TARGET].exe
 #define dest $[install_bin_dir]
 	copy $[st_dir]\$[local] $[dest]
 
+#if $[build_pdbs]
+$[install_bin_dir]\$[TARGET].pdb : $[st_dir]\$[TARGET].pdb
+#define local $[TARGET].pdb
+#define dest $[install_bin_dir]
+	copy $[st_dir]\$[local] $[dest]
+#endif
+
 #end bin_target