| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419 |
- #print Generating for $[USE_COMPILER]
- //////////////////////////////
- // MICROSOFT VISUAL C++ 6.0 //
- //////////////////////////////
- #if $[eq $[USE_COMPILER], MSVC]
- #define COMPILER cl
- #define LINKER link
- #define LIBBER lib
- #define COMMONFLAGS /Gi-
- // use "unsafe" QIfist flt->int rounding only if FAST_FLT_TO_INT is defined
- #define OPTFLAGS /O2 /Ob1 /G7 $[if $[ne $[FAST_FLT_TO_INT],], /QIfist,]
- #define OPT1FLAGS /GZ
- // Note: Zi cannot be used on multiproc builds with precomp hdrs, Z7 must be used instead
- #defer DEBUGPDBFLAGS /Zi /Fd"$[osfilename $[patsubst %.obj,%.pdb,$[target]]]"
- #defer DEBUGFLAGS /MDd $[BROWSEINFO_FLAG] $[DEBUGINFOFLAGS] $[DEBUGPDBFLAGS]
- #defer RELEASEFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MT, /MD]
- #define WARNING_LEVEL_FLAG /Wall
- // NODEFAULTLIB ensures static libs linked in will connect to the correct msvcrt, so no debug/release mixing occurs
- #define LDFLAGS_OPT1 /NODEFAULTLIB:MSVCRT.LIB
- #define LDFLAGS_OPT2 /NODEFAULTLIB:MSVCRT.LIB
- #define LDFLAGS_OPT3 /NODEFAULTLIB:MSVCRTD.LIB /OPT:REF
- #define LDFLAGS_OPT4 /NODEFAULTLIB:MSVCRTD.LIB /OPT:REF $[LDFLAGS_OPT4]
- #define MAPINFOFLAGS /MAPINFO:EXPORTS /MAPINFO:FIXUPS /MAPINFO:LINES
- #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
- // Note: all Opts will link w/debug info now
- #define LINKER_FLAGS /DEBUG /DEBUGTYPE:CV $[PROFILE_FLAG] /MAP $[MAPINFOFLAGS] /fixed:no /incremental:no /stack:4194304 /WARN:3
- // Added to avoid old iostream reference problems
- #define LINKER_FLAGS $[LINKER_FLAGS] /NODEFAULTLIB:LIBCI.LIB
- // for mixed intel/msvc build, add these
- // #define EXTRA_LIBPATH /ia32/lib
- // #define EXTRA_INCPATH /ia32/include
- #if $[or $[ne $[FORCE_INLINING],],$[>= $[OPTIMIZE],2]]
- #define EXTRA_CDEFS FORCE_INLINING $[EXTRA_CDEFS]
- #endif
- // ensure pdbs are copied to install dir
- #define build_pdbs yes
- ////////////////////////////////////////////////////////////////////
- // MICROSOFT VISUAL C++ 7.0, 7.1, & 8.0 (.NET, .NET 2003, & 2005) //
- ////////////////////////////////////////////////////////////////////
- #elif $[or $[or $[eq $[USE_COMPILER], MSVC7], $[eq $[USE_COMPILER], MSVC7_1]], $[eq $[USE_COMPILER],MSVC8]]
- #define COMPILER cl
- #define LINKER link
- #define LIBBER lib
- #if $[eq $[NO_CROSSOBJ_OPT],]
- #define DO_CROSSOBJ_OPT 1
- #endif
- #if $[DO_CROSSOBJ_OPT]
- #define OPT4FLAGS /GL
- #define LDFLAGS_OPT4 /LTCG
- #if $[>= $[OPTIMIZE],4]
- #define LIBBER $[LIBBER] /LTCG
- #endif
- #endif
- #define CDEFINES_OPT1
- #define CDEFINES_OPT2
- #define CDEFINES_OPT3
- #define CDEFINES_OPT4
- // NODEFAULTLIB ensures static libs linked in will connect to the correct msvcrt, so no debug/release mixing occurs
- #define LDFLAGS_OPT1 /NODEFAULTLIB:MSVCRT.LIB
- #define LDFLAGS_OPT2 /NODEFAULTLIB:MSVCRT.LIB
- #define LDFLAGS_OPT3 /NODEFAULTLIB:MSVCRTD.LIB /OPT:REF
- #define LDFLAGS_OPT4 /NODEFAULTLIB:MSVCRTD.LIB /OPT:REF $[LDFLAGS_OPT4]
- #define COMMONFLAGS /DHAVE_DINKUM /Zc:forScope
- // use "unsafe" QIfist flt->int rounding only if FAST_FLT_TO_INT is defined
- #if $[or $[eq $[USE_COMPILER], MSVC7], $[eq $[USE_COMPILER], MSVC7_1]]
- #define REGULAR_OPTFLAGS /O2 /Ob2 /G7 $[if $[ne $[FAST_FLT_TO_INT],], /QIfist,]
- #defer OPTFLAGS $[if $[OPT_MINSIZE],/Ox /Og /Ob1 /Oi /Os /Oy /GL /G7,$[REGULAR_OPTFLAGS]]
- #else
- #define REGULAR_OPTFLAGS /O2 /Ob2 $[if $[ne $[FAST_FLT_TO_INT],], /QIfist,]
- #defer OPTFLAGS $[if $[OPT_MINSIZE],/Ox /Og /Ob1 /Oi /Os /Oy /GL,$[REGULAR_OPTFLAGS]]
- #endif
- // #define OPT1FLAGS /RTCsu /GS removing /RTCu because it crashes in dxgsg with internal compiler bug
- #define OPT1FLAGS /RTCs /GS
- #define WARNING_LEVEL_FLAG /W3 // WL
- //#define WARNING_LEVEL_FLAG /Wall
- //#define WARNING_LEVEL_FLAG /W4 /WX
- // Note: Zi cannot be used on multiproc builds with precomp hdrs, Z7 must be used instead
- #defer DEBUGPDBFLAGS /Zi /Fd"$[osfilename $[patsubst %.obj,%.pdb, $[target]]]"
- // if LINK_FORCE_STATIC_C_RUNTIME is defined, it always links with static c runtime (release version
- // for both Opt1 and Opt4!) instead of the msvcrt dlls
- #defer DEBUGFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MTd, /MDd] $[BROWSEINFO_FLAG] $[DEBUGINFOFLAGS] $[DEBUGPDBFLAGS]
- #defer RELEASEFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MT, /MD]
- #if $[or $[eq $[USE_COMPILER], MSVC7], $[eq $[USE_COMPILER], MSVC7_1]]
- #define MAPINFOFLAGS /MAPINFO:EXPORTS /MAPINFO:LINES
- #else
- #define MAPINFOFLAGS /MAPINFO:EXPORTS
- #endif
- #if $[ENABLE_PROFILING]
- #define PROFILE_FLAG /FIXED:NO
- #else
- #define PROFILE_FLAG
- #endif
- #if $[or $[ne $[FORCE_INLINING],],$[>= $[OPTIMIZE],2]]
- #defer EXTRA_CDEFS $[EXTRA_CDEFS] $[if $[OPT_MINSIZE],,FORCE_INLINING]
- #endif
- // Note: all Opts will link w/debug info now
- #define LINKER_FLAGS /DEBUG $[PROFILE_FLAG] /MAP $[MAPINFOFLAGS] /fixed:no /incremental:no /stack:4194304
- // Added to avoid old iostream reference problems
- #define LINKER_FLAGS $[LINKER_FLAGS] /NODEFAULTLIB:LIBCI.LIB
- #if $[eq $[USE_COMPILER],MSVC8]
- #define LINKER_FLAGS $[LINKER_FLAGS] /NOD:MFC80.LIB /NOD:libcmtd /NOD:libc
- #endif
- // #define LINKER_FLAGS $[LINKER_FLAGS] /NODEFAULTLIB:LIBCI.LIB /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcprt.lib
- // in case we have mixed intel/msvc build
- // #define EXTRA_LIBPATH /ia32/lib
- // #define EXTRA_INCPATH /ia32/include
- // ensure pdbs are copied to install dir
- #define build_pdbs yes
- /////////////////////////////////////
- // MICROSOFT VISUAL C++ 9.0 (2008) //
- /////////////////////////////////////
- #elif $[eq $[USE_COMPILER], MSVC9]
- #define COMPILER cl
- #define LINKER link
- #define LIBBER lib
- #define MT_BIN mt
- #if $[eq $[NO_CROSSOBJ_OPT],]
- #define DO_CROSSOBJ_OPT 1
- #endif
- #if $[DO_CROSSOBJ_OPT]
- #define OPT4FLAGS /GL
- #define LDFLAGS_OPT4 /LTCG
- #if $[>= $[OPTIMIZE],4]
- #define LIBBER $[LIBBER] /LTCG
- #endif
- #endif
- #define CDEFINES_OPT1
- #define CDEFINES_OPT2
- #define CDEFINES_OPT3
- #define CDEFINES_OPT4
- // NODEFAULTLIB ensures static libs linked in will connect to the correct msvcrt, so no debug/release mixing occurs
- #define LDFLAGS_OPT1 /NODEFAULTLIB:MSVCRT.LIB
- #define LDFLAGS_OPT2 /NODEFAULTLIB:MSVCRT.LIB
- #define LDFLAGS_OPT3 /NODEFAULTLIB:MSVCRTD.LIB /OPT:REF
- #define LDFLAGS_OPT4 /NODEFAULTLIB:MSVCRTD.LIB /OPT:REF $[LDFLAGS_OPT4]
- #define COMMONFLAGS /DHAVE_DINKUM /Zc:forScope /bigobj
- // use "unsafe" QIfist flt->int rounding only if FAST_FLT_TO_INT is defined
- #define REGULAR_OPTFLAGS /O2 /Ob2 $[if $[ne $[FAST_FLT_TO_INT],], /QIfist,]
- #defer OPTFLAGS $[if $[OPT_MINSIZE],/Ox /Og /Ob1 /Oi /Os /Oy /GL,$[REGULAR_OPTFLAGS]]
- // #define OPT1FLAGS /RTCsu /GS removing /RTCu because it crashes in dxgsg with internal compiler bug
- #define OPT1FLAGS /RTCs /GS
- #define WARNING_LEVEL_FLAG /W3 // WL
- // Note: Zi cannot be used on multiproc builds with precomp hdrs, Z7 must be used instead
- #defer DEBUGPDBFLAGS /Zi /Fd"$[osfilename $[patsubst %.obj,%.pdb, $[target]]]"
- // if LINK_FORCE_STATIC_C_RUNTIME is defined, it always links with static c runtime (release version
- // for both Opt1 and Opt4!) instead of the msvcrt dlls
- #defer DEBUGFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MTd, /MDd] $[BROWSEINFO_FLAG] $[DEBUGINFOFLAGS] $[DEBUGPDBFLAGS]
- #defer RELEASEFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MT, /MD]
- #define MAPINFOFLAGS /MAPINFO:EXPORTS
- #if $[ENABLE_PROFILING]
- #define PROFILE_FLAG /FIXED:NO
- #else
- #define PROFILE_FLAG
- #endif
- #if $[or $[ne $[FORCE_INLINING],],$[>= $[OPTIMIZE],2]]
- #defer EXTRA_CDEFS $[EXTRA_CDEFS] $[if $[OPT_MINSIZE],,FORCE_INLINING]
- #endif
- // Note: all Opts will link w/debug info now
- #define LINKER_FLAGS /DEBUG $[PROFILE_FLAG] /MAP $[MAPINFOFLAGS] /fixed:no /incremental:no /stack:4194304
- // Added to avoid old iostream reference problems
- #define LINKER_FLAGS $[LINKER_FLAGS] /NODEFAULTLIB:LIBCI.LIB
- // Added to make pandatool function in VS 9
- #define LINKER_FLAGS $[LINKER_FLAGS] /NOD:MFC80.LIB /NOD:libcmtd /NOD:libc
- // Added to generate manifest files even when no dependencies exist
- #define LINKER_FLAGS $[LINKER_FLAGS] /MANIFEST
- // ensure pdbs are copied to install dir
- #define build_pdbs yes
- ///////////////////////////////////////////////////
- // MICROSOFT VISUAL C++ 9.0 (2008) 64-bit output //
- ///////////////////////////////////////////////////
- #elif $[eq $[USE_COMPILER], MSVC9x64]
- #define COMPILER cl
- #define LINKER link
- #define LIBBER lib
- #define MT_BIN mt
- #if $[eq $[NO_CROSSOBJ_OPT],]
- #define DO_CROSSOBJ_OPT 1
- #endif
- #if $[DO_CROSSOBJ_OPT]
- #define OPT4FLAGS /GL
- #define LDFLAGS_OPT4 /LTCG
- #if $[>= $[OPTIMIZE],4]
- #define LIBBER $[LIBBER] /LTCG
- #endif
- #endif
- #define CDEFINES_OPT1
- #define CDEFINES_OPT2
- #define CDEFINES_OPT3
- #define CDEFINES_OPT4
- // NODEFAULTLIB ensures static libs linked in will connect to the correct msvcrt, so no debug/release mixing occurs
- #define LDFLAGS_OPT1 /NODEFAULTLIB:MSVCRT.LIB
- #define LDFLAGS_OPT2 /NODEFAULTLIB:MSVCRT.LIB
- #define LDFLAGS_OPT3 /NODEFAULTLIB:MSVCRTD.LIB /OPT:REF
- #define LDFLAGS_OPT4 /NODEFAULTLIB:MSVCRTD.LIB /OPT:REF $[LDFLAGS_OPT4]
- #define COMMONFLAGS /DHAVE_DINKUM /Zc:forScope /bigobj
- // use "unsafe" QIfist flt->int rounding only if FAST_FLT_TO_INT is defined
- #define REGULAR_OPTFLAGS /O2 /Ob2 $[if $[ne $[FAST_FLT_TO_INT],], /QIfist,]
- #defer OPTFLAGS $[if $[OPT_MINSIZE],/Ox /Og /Ob1 /Oi /Os /Oy /GL,$[REGULAR_OPTFLAGS]]
- // #define OPT1FLAGS /RTCsu /GS removing /RTCu because it crashes in dxgsg with internal compiler bug
- #define OPT1FLAGS /RTCs /GS
- #define WARNING_LEVEL_FLAG /W3 // WL
- // Note: Zi cannot be used on multiproc builds with precomp hdrs, Z7 must be used instead
- #defer DEBUGPDBFLAGS /Zi /Fd"$[osfilename $[patsubst %.obj,%.pdb, $[target]]]"
- // if LINK_FORCE_STATIC_C_RUNTIME is defined, it always links with static c runtime (release version
- // for both Opt1 and Opt4!) instead of the msvcrt dlls
- #defer DEBUGFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MTd, /MDd] $[BROWSEINFO_FLAG] $[DEBUGINFOFLAGS] $[DEBUGPDBFLAGS]
- #defer RELEASEFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MT, /MD]
- #define MAPINFOFLAGS /MAPINFO:EXPORTS
- #if $[ENABLE_PROFILING]
- #define PROFILE_FLAG /FIXED:NO
- #else
- #define PROFILE_FLAG
- #endif
- #if $[or $[ne $[FORCE_INLINING],],$[>= $[OPTIMIZE],2]]
- #defer EXTRA_CDEFS $[EXTRA_CDEFS] $[if $[OPT_MINSIZE],,FORCE_INLINING]
- #endif
- // Note: all Opts will link w/debug info now
- #define LINKER_FLAGS /DEBUG $[PROFILE_FLAG] $[if $[eq $[USE_COMPILER],MSVC9x64], /MACHINE:X64,] /MAP $[MAPINFOFLAGS] /fixed:no /incremental:no /stack:4194304
- // Added to avoid old iostream reference problems
- #define LINKER_FLAGS $[LINKER_FLAGS] /NODEFAULTLIB:LIBCI.LIB
- // Added to make pandatool function in VS 9
- #define LINKER_FLAGS $[LINKER_FLAGS] /NOD:MFC80.LIB /NOD:libcmtd /NOD:libc
- // Added to generate manifest files even when no dependencies exist
- #define LINKER_FLAGS $[LINKER_FLAGS] /MANIFEST
- // ensure pdbs are copied to install dir
- #define build_pdbs yes
- ////////////////////
- // INTEL COMPILER //
- ////////////////////
- #elif $[eq $[USE_COMPILER], INTEL]
- #define COMPILER icl
- #define LINKER xilink
- #define LIBBER xilib
- #define COMMONFLAGS /DHAVE_DINKUM /Gi- /Qwd985 /Qvc7 /G6
- // Note: Zi cannot be used on multiproc builds with precomp hdrs, Z7 must be used instead
- #defer DEBUGPDBFLAGS /Zi /Qinline_debug_info /Fd"$[osfilename $[patsubst %.obj,%.pdb,$[target]]]"
- // Oy- needed for MS debugger
- #defer DEBUGFLAGS /Oy- /MDd $[BROWSEINFO_FLAG] $[DEBUGINFOFLAGS] $[DEBUGPDBFLAGS]
- #defer RELEASEFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MT, /MD]
- #define WARNING_LEVEL_FLAG /W3
- #if $[DO_CROSSOBJ_OPT]
- #define OPT4FLAGS /Qipo
- #define LDFLAGS_OPT4 /Qipo
- #endif
- // NODEFAULTLIB ensures static libs linked in will connect to the correct msvcrt, so no debug/release mixing occurs
- #define LDFLAGS_OPT1 /NODEFAULTLIB:MSVCRT.LIB
- #define LDFLAGS_OPT2 /NODEFAULTLIB:MSVCRT.LIB
- #define LDFLAGS_OPT3 /NODEFAULTLIB:MSVCRTD.LIB /OPT:REF
- #define LDFLAGS_OPT4 /NODEFAULTLIB:MSVCRTD.LIB /OPT:REF $[LDFLAGS_OPT4]
- // #define OPTFLAGS /O3 /Qipo /QaxW /Qvec_report1
- #define OPTFLAGS /O3 /Qip
- // use "unsafe" QIfist flt->int rounding only if FAST_FLT_TO_INT is defined
- #define OPTFLAGS $[OPTFLAGS] $[if $[ne $[FAST_FLT_TO_INT],], /QIfist,]
- #define OPT1FLAGS /GZ /Od
- // We assume the Intel compiler installation dir is mounted as /ia32.
- #define EXTRA_LIBPATH /ia32/lib
- #define EXTRA_INCPATH /ia32/include
- #if $[or $[ne $[FORCE_INLINING],],$[>= $[OPTIMIZE],2]]
- #define EXTRA_CDEFS FORCE_INLINING $[EXTRA_CDEFS]
- #endif
- // Note: all Opts will link w/debug info now
- #define LINKER_FLAGS /DEBUG /DEBUGTYPE:CV $[PROFILE_FLAG] /MAP $[MAPINFOFLAGS] /fixed:no /incremental:no /stack:4194304
- // Added to avoid old iostream reference problems
- #define LINKER_FLAGS $[LINKER_FLAGS] /NODEFAULTLIB:LIBCI.LIB
- // ensure pdbs are copied to install dir
- #define build_pdbs yes
- #elif $[eq $[USE_COMPILER], BOUNDS] // NuMega BoundsChecker
- #define COMPILER nmcl
- #define LINKER nmlink
- #define LIBBER lib
- #define COMMONFLAGS
- #define OPTFLAGS /O2 /Ogity /G6
- #define OPT1FLAGS /GZ
- #defer DEBUGPDBFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[patsubst %.obj,%.pdb,$[target]]]"
- #defer RELEASEFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MT, /MD]
- #define EXTRA_LIBPATH
- #define EXTRA_INCPATH
- #if $[BOUNDS_TRUETIME] // NuMega BoundsChecker TrueTime Profiler
- // This may look like a bad thing (to extend the compiler
- // and linker with a switch), but I think it's the right
- // thing to do in this case -- skyler.
- #define COMPILER $[COMPILER] /NMttOn
- #define LINKER $[LINKER] /NMttOn
- #endif
- #elif $[eq $[USE_COMPILER], TRUETIME] // NuMega TrueTime Profiler
- // This may look like a bad thing (to extend the compiler
- // and linker with a switch), but I think it's the right
- // thing to do in this case -- skyler.
- #define COMPILER nmcl /NMttOn
- #define LINKER nmlink /NMttOn
- #define LIBBER lib
- #define COMMONFLAGS
- #define OPTFLAGS /O2 /Ogity /G6
- #define OPT1FLAGS /GZ
- #defer DEBUGPDBFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[patsubst %.obj,%.pdb,$[target]]]"
- #defer RELEASEFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MT, /MD]
- #define EXTRA_LIBPATH
- #define EXTRA_INCPATH
- #else
- #error Invalid value specified for USE_COMPILER.
- #endif
- #if $[CHECK_SYNTAX_ONLY]
- #define END_CFLAGS $[END_CFLAGS] /Zs
- #endif
- #if $[GEN_ASSEMBLY]
- // Note: Opt4 /GL will cause /FAs to not generate .asm! Must remove /GL for /FAs to work!
- #define END_CFLAGS $[END_CFLAGS] /FAs
- #endif
- #if $[PREPROCESSOR_OUTPUT]
- #define END_CFLAGS $[END_CFLAGS] /E
- #endif
- #defer tau_opts $[decygwin %,-I"%",$[EXTRA_INCPATH] $[ipath] $[WIN32_PLATFORMSDK_INCPATH] $[tau_ipath]] $[building_var:%=-D%]
- #if $[eq $[USE_COMPILER], MSVC9x64]
- #defer TAU_MAKE_IL $[PDT_ROOT]/Windows/bin/edgcpfe -o $[il_source] $[tau_opts] $[cdefines:%=-D%] $[C++FLAGS] -DWIN64=1 $[TAU_INSTRUMENTOR_FLAGS] $[source]
- #else
- #defer TAU_MAKE_IL $[PDT_ROOT]/Windows/bin/edgcpfe -o $[il_source] $[tau_opts] $[cdefines:%=-D%] $[C++FLAGS] -DWIN32=1 $[TAU_INSTRUMENTOR_FLAGS] $[source]
- #endif
- #defer TAU_MAKE_PDB $[PDT_ROOT]/Windows/bin/taucpdisp $[il_source] > $[pdb_source]
- #defer TAU_MAKE_INST $[TAU_ROOT]/bin/tau_instrumentor $[pdb_source] $[source] -o $[inst_source]
|