From b51683f7ea131a07a60cbdf2fadaeeb8efc0dc08 Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 29 Mar 2001 23:48:19 +0000 Subject: [PATCH] *** empty log message *** --- dtool/pptempl/Global.gmsvc.pp | 91 +++++++++++++++++++++++++++------ dtool/pptempl/Global.msvc.pp | 27 +++++++--- dtool/pptempl/Template.gmsvc.pp | 30 ++++++++++- dtool/pptempl/Template.msvc.pp | 22 ++++++++ 4 files changed, 147 insertions(+), 23 deletions(-) diff --git a/dtool/pptempl/Global.gmsvc.pp b/dtool/pptempl/Global.gmsvc.pp index 38563cd4f1..798aea6a58 100644 --- a/dtool/pptempl/Global.gmsvc.pp +++ b/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 -#defer CDEFINES_OPT1 _DEBUG -#defer CDEFINES_OPT2 _DEBUG -#defer CDEFINES_OPT3 -#defer CDEFINES_OPT4 NDEBUG +#define CFLAGS_SHARED -#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- +#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 $[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%] $[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 + diff --git a/dtool/pptempl/Global.msvc.pp b/dtool/pptempl/Global.msvc.pp index 3d0f2cc671..e24021ed96 100644 --- a/dtool/pptempl/Global.msvc.pp +++ b/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 diff --git a/dtool/pptempl/Template.gmsvc.pp b/dtool/pptempl/Template.gmsvc.pp index e20fe0d917..9c55395034 100644 --- a/dtool/pptempl/Template.gmsvc.pp +++ b/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 diff --git a/dtool/pptempl/Template.msvc.pp b/dtool/pptempl/Template.msvc.pp index d182695fcd..4a188bc075 100644 --- a/dtool/pptempl/Template.msvc.pp +++ b/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