new installer build system

This commit is contained in:
cxgeorge 2002-12-17 02:08:49 +00:00
parent d5feca8fe3
commit d6f92fe62b
6 changed files with 272 additions and 192 deletions

View File

@ -32,7 +32,7 @@
// syntax used in the various ppremake system configure files; it's
// designed to be easy to use as a macro language to generate
// makefiles and their ilk.
//
//
// Some of the variables below are defined using the #define command,
// and others are defined using #defer. The two are very similar in
@ -191,7 +191,7 @@
// necessary if the default include and link lines that come with the
// compiler don't provide adequate STL support. At least some form of
// STL is absolutely required in order to build Panda.
#define STL_IPATH
#define STL_IPATH
#define STL_LPATH
#define STL_CFLAGS
#define STL_LIBS
@ -266,7 +266,7 @@
#if $[WINDOWS_PLATFORM]
#defer GL_IPATH
#defer GL_LPATH
#define GL_LIBS opengl32.lib glu32.lib
#define GL_LIBS opengl32.lib glu32.lib
#else
#defer GL_IPATH
#defer GL_LPATH /usr/X11R6/lib
@ -356,9 +356,9 @@
#defer NOTIFY_DEBUG $[< $[OPTIMIZE], 4]
// Do you want to build the audio interface?
#define HAVE_AUDIO 1
#define HAVE_AUDIO 1
// Info for the RAD game tools, Miles Sound System
// Info for the RAD game tools, Miles Sound System
// note this may be overwritten in wintools Config.pp
#define RAD_MSS_IPATH /usr/include/Miles6/include
#define RAD_MSS_LPATH /usr/lib/Miles6/lib/win
@ -412,7 +412,7 @@
//#define LINK_IN_EGG yes
//#define LINK_IN_PHYSICS yes
// Define USE_COMPILER to switch the particular compiler that should
// Define USE_COMPILER to switch the particular compiler that should
// be used. A handful of tokens are recognized, depending on BUILD_TYPE.
// This may also be further customized within Global.$[BUILD_TYPE].pp.
@ -429,7 +429,7 @@
#if $[WINDOWS_PLATFORM]
#if $[eq $[USE_COMPILER],]
#define USE_COMPILER MSVC7
#endif
#endif
#elif $[eq $[PLATFORM], Irix]
#define USE_COMPILER MIPS
#elif $[eq $[PLATFORM], Linux]
@ -443,7 +443,7 @@
// need to have these programs if you need to make changes to the
// bison or flex sources (see the next point, below).
#defer BISON bison
#defer FLEX flex
#defer FLEX flex
// You may not even have bison and flex installed. If you don't, no
// sweat; Panda ships with the pre-generated output of these programs,
@ -466,7 +466,9 @@
// However, don't define this to be '.', or you will be very sad the
// next time you run 'make clean'.
//#defer ODIR Opt$[OPTIMIZE]-$[PLATFORM]$[USE_COMPILER]
#defer ODIR Opt$[OPTIMIZE]-$[PLATFORM]
// ODIR_SUFFIX is optional, usually empty
#defer ODIR Opt$[OPTIMIZE]-$[PLATFORM]$[ODIR_SUFFIX]
// What is the normal extension of a compiled object file?
#if $[WINDOWS_PLATFORM]
@ -568,7 +570,7 @@
#if $[eq $[USE_COMPILER], MIPS]
#define CC cc -n32 -mips3
#define CXX CC -n32 -mips3
// Turn off a few annoying warning messages.
// 1174 - function 'blah' was declared but never used
// 1201 - trailing comma is nonstandard.
@ -585,20 +587,20 @@
// 85 - definition of SOMESYMBOL in SOMELIB preempts that of definition in
// SOMEOTHERLIB.
#define WOFF_LIST $[WOFF_LIST] -Wl,-LD_MSG:off=85
#defer OPTFLAGS -O2 -OPT:Olimit=2500
#defer CFLAGS_OPT1 $[CDEFINES_OPT1:%=-D%] $[WOFF_LIST] -g
#defer CFLAGS_OPT2 $[CDEFINES_OPT2:%=-D%] $[WOFF_LIST]
#defer CFLAGS_OPT3 $[CDEFINES_OPT3:%=-D%] $[WOFF_LIST]
#defer CFLAGS_OPT4 $[CDEFINES_OPT4:%=-D%] $[WOFF_LIST]
#defer CFLAGS_SHARED
#defer STATIC_LIB_C $[CC] -ar -o $[target] $[sources]
#defer STATIC_LIB_C++ $[CXX] -ar -o $[target] $[sources]
#defer RANLIB
#define SHARED_FLAGS -Wl,-none -Wl,-update_registry,$[TOPDIR]/so_locations
#defer SHARED_LIB_C $[CC] -shared $[SHARED_FLAGS] -o $[target] $[sources] $[lpath:%=-L%] $[libs:%=-l%]
#defer SHARED_LIB_C++ $[CXX] -shared $[SHARED_FLAGS] -o $[target] $[sources] $[lpath:%=-L%] $[libs:%=-l%]

View File

@ -36,13 +36,12 @@
// various Template.*.pp files will be able to reliably access
// $[compile_sources] from the different directories.
#define composite_list
// Tag all the static libraries by defining the "lib_is_static" variable.
#forscopes static_lib_target ss_lib_target
#define lib_is_static 1
#end static_lib_target ss_lib_target
#forscopes metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target
#forscopes metalib_target lib_target noinst_lib_target test_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target
// We can optimize quite a bit by evaluating now several of the key
// deferred variables defined in Globals.pp. This way they won't need
// to get repeatedly reevaluated as each directory examines each
@ -69,13 +68,13 @@
// Now compute the source files.
#define c_sources $[filter %.c,$[get_sources]]
#define cxx_sources $[filter-out %_src.cxx,$[filter %.cxx,$[get_sources]]]
#define cxx_sources $[filter-out %_src.cxx,$[filter %.cxx %.cpp,$[get_sources]]]
#define yxx_sources $[filter %.yxx,$[get_sources]]
#define lxx_sources $[filter %.lxx,$[get_sources]]
// Define what the object files are.
#foreach file $[c_sources] $[cxx_sources] $[yxx_sources] $[lxx_sources]
#define $[file]_obj $[patsubst %.c %.cxx %.yxx %.lxx,$[ODIR]/$[TARGET]_%$[OBJ],$[file]]
#define $[file]_obj $[patsubst %.c %.cxx %.cpp %.yxx %.lxx,$[ODIR]/$[TARGET]_%$[OBJ],$[notdir $[file]]]
#push 1 $[file]_obj
#end file
@ -132,7 +131,7 @@
#define compile_sources $[c_sources] $[cxx_sources]
#end metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target
#end metalib_target lib_target noinst_lib_target test_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target
// Allow the user to define additional EXTRA_DEPENDS targets in each
// Sources.pp.

View File

@ -11,7 +11,7 @@
// encapsulates each of the libraries we'd be linking with normally.
// In the case where a particular library is not part of a metalib,
// we include the library itself.
#define actual_libs
#foreach lib $[complete_libs]
// Only consider libraries that we're actually building.
@ -57,12 +57,12 @@
#if $[ne $[LINK_ALL_STATIC],]
#define dlink_all_static LINK_ALL_STATIC
#define build_dlls
#define build_libs yes
#define build_libs yes
#define dlllib lib
#else
#define dlink_all_static
#define build_dlls yes
#define build_libs
#define build_libs
#define dlllib dll
#endif
@ -80,8 +80,8 @@
#defer CDEFINES_OPT4 NDEBUG $[dlink_all_static] $[EXTRA_CDEFS] $[CDEFINES_OPT4]
// Opt1 /GZ disables OPT flags, so make sure its OPT1 only
#defer CFLAGS_OPT1 $[CDEFINES_OPT1:%=/D%] $[COMMONFLAGS] $[DEBUGFLAGS] $[OPT1FLAGS]
#defer CFLAGS_OPT2 $[CDEFINES_OPT2:%=/D%] $[COMMONFLAGS] $[DEBUGFLAGS] $[OPTFLAGS]
#defer CFLAGS_OPT1 $[CDEFINES_OPT1:%=/D%] $[COMMONFLAGS] $[DEBUGFLAGS] $[OPT1FLAGS]
#defer CFLAGS_OPT2 $[CDEFINES_OPT2:%=/D%] $[COMMONFLAGS] $[DEBUGFLAGS] $[OPTFLAGS]
#defer CFLAGS_OPT3 $[CDEFINES_OPT3:%=/D%] $[COMMONFLAGS] $[RELEASEFLAGS] $[OPTFLAGS] $[DEBUGPDBFLAGS]
#defer CFLAGS_OPT4 $[CDEFINES_OPT4:%=/D%] $[COMMONFLAGS] $[RELEASEFLAGS] $[OPTFLAGS] $[OPT4FLAGS] $[DEBUGPDBFLAGS]
@ -107,6 +107,11 @@
// distinction is so important in Windows).
#define dllext $[if $[<= $[OPTIMIZE],2],_d]
// note: does NOT include .dll or .lib at end
#defun get_dllname dll_basename
$[if $[ne $[DONT_USE_PANDA_DLL_NAMING],], $[dll_basename], lib$[dll_basename]$[dllext]]
#end get_dllname
#defer interrogate_ipath $[decygwin %,-I"%",$[target_ipath]]
#defer interrogate_spath $[decygwin %,-S"%",$[install_parser_inc_dir]]
@ -118,13 +123,16 @@
#defer COMPILE_C $[COMPILER] /Fo"$[osfilename $[target]]" $[MAIN_C_COMPILE_ARGS]
#defer COMPILE_C++ $[COMPILE_C]
#defer STATIC_LIB_C $[LIBBER] /nologo $[sources] /OUT:"$[osfilename $[target]]"
#defer STATIC_LIB_C $[LIBBER] /nologo $[sources] /OUT:"$[osfilename $[target]]"
#defer STATIC_LIB_C++ $[STATIC_LIB_C]
#defer COMPILE_IDL midl /nologo /env win32 /Oicf $[DECYGWINED_INC_PATHLIST_ARGS]
#defer COMPILE_RC rc /R /D "NDEBUG" /L 0x409 $[DECYGWINED_INC_PATHLIST_ARGS]
// if we're attached, use dllbase.txt. otherwise let OS loader resolve dll addrspace collisions
#if $[ne $[DTOOL],]
// use predefined bases to speed dll loading and simplify debugging
#defer DLLNAMEBASE lib$[TARGET]$[dllext]
#defer DLLNAMEBASE $[get_dllname $[TARGET]]
#defer DLLBASEADDRFILENAME dllbase.txt
#defer DLLBASEARG "/BASE:@$[dtool_ver_dir]\$[DLLBASEADDRFILENAME],$[DLLNAMEBASE]"
#else
@ -132,9 +140,11 @@
#define GENERATE_BUILDDATE
#endif
#defer LINKER_DEF_FILE_ARG $[if $[LINKER_DEF_FILE],/DEF:"$[LINKER_DEF_FILE]",]
//#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 $[LINKER] /nologo /dll $[LDFLAGS_OPT$[OPTIMIZE]] $[DLLBASEARG] /OUT:"$[osfilename $[target]]" $[sources] $[decygwin %,/LIBPATH:"%",$[lpath] $[EXTRA_LIBPATH]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]]
//#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 $[LINKER] /nologo /DLL $[LINKER_DEF_FILE_ARG] $[LDFLAGS_OPT$[OPTIMIZE]] $[DLLBASEARG] /OUT:"$[osfilename $[target]]" $[sources] $[decygwin %,/LIBPATH:"%",$[lpath] $[EXTRA_LIBPATH]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]]
#defer SHARED_LIB_C++ $[SHARED_LIB_C]
#defer LINK_BIN_C $[LINKER] /nologo $[LDFLAGS_OPT$[OPTIMIZE]] $[sources] $[decygwin %,/LIBPATH:"%",$[lpath] $[EXTRA_LIBPATH]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]] /OUT:"$[osfilename $[target]]"

View File

@ -35,7 +35,7 @@
// variable as set for the dconfig library (that is, the expression
// $[SOURCES] is evaluated within the named scope whose key is
// "dconfig"--whose variable $[TARGET] was defined to be "dconfig").
#map all_libs TARGET(*/static_lib_target */ss_lib_target */lib_target */noinst_lib_target */metalib_target)
#map all_libs TARGET(*/static_lib_target */ss_lib_target */lib_target */noinst_lib_target */test_lib_target */metalib_target)
// This map variable allows us to look up global variables that might
// be defined in a particular Sources.pp, e.g. in the "toplevel" file.
@ -51,10 +51,10 @@
// Windows).
#if $[WINDOWS_PLATFORM]
#map static_libs TARGET(*/static_lib_target */ss_lib_target)
#map dynamic_libs TARGET(*/lib_target */noinst_lib_target */metalib_target)
#map dynamic_libs TARGET(*/lib_target */noinst_lib_target */test_lib_target */metalib_target)
#else
#map static_libs TARGET(*/static_lib_target)
#map dynamic_libs TARGET(*/lib_target */ss_lib_target */noinst_lib_target */metalib_target)
#map dynamic_libs TARGET(*/lib_target */ss_lib_target */noinst_lib_target */test_lib_target */metalib_target)
#endif
// This lets us identify which metalib, if any, is including each
@ -63,7 +63,7 @@
#map module COMPONENT_LIBS(*/metalib_target)
// This lets up look up components of a particular metalib.
#map components TARGET(*/lib_target */noinst_lib_target)
#map components TARGET(*/lib_target */noinst_lib_target */test_lib_target)
// And this lets us look up source directories by dirname.
#map dirnames DIRNAME(*/)
@ -114,7 +114,7 @@
#if $[HAVE_SOXST]
#define soxst_ipath $[wildcard $[SOXST_IPATH]]
#define soxst_lpath $[wildcard $[SOXST_LPATH]]
#define soxst_lpath $[wildcard $[SOXST_LPATH]]
#define soxst_cflags $[SOXST_CFLAGS]
#define soxst_libs $[SOXST_LIBS]
#endif
@ -293,7 +293,7 @@
$[if $[ne $[NO_COMBINED_SOURCES],], $[INCLUDED_SOURCES], $[get_combined_sources]]
#defer included_sources $[INCLUDED_SOURCES]
// This variable returns the set of sources that are to be
// interrogated for the current target.
#defer get_igatescan \
@ -326,12 +326,13 @@
// This variable returns the set of external packages used by this
// target, and by all the components shared by this target.
#defer use_packages $[sort $[USE_PACKAGES] $[components $[USE_PACKAGES],$[active_component_libs]]]
// This function returns the appropriate cflags for the target, based
// on the various external packages this particular target claims to
// require.
#defun get_cflags
#define alt_cflags $[stl_cflags] $[nspr_cflags] $[python_cflags]
// hack to add stl,nspr,python. should be removed
#define alt_cflags $[if $[IGNORE_LIB_DEFAULTS_HACK],,$[stl_cflags] $[nspr_cflags] $[python_cflags]]
#foreach package $[use_packages]
#set alt_cflags $[alt_cflags] $[$[package]_cflags]
@ -345,8 +346,9 @@
// claims to require. This returns a space-separated set of directory
// names only; the -I switch is not included here.
#defun get_ipath
#define alt_ipath $[stl_ipath] $[nspr_ipath] $[python_ipath]
// hack to add stl,nspr,python. should be removed
#define alt_ipath $[if $[IGNORE_LIB_DEFAULTS_HACK],,$[stl_ipath] $[nspr_ipath] $[python_ipath]]
#foreach package $[use_packages]
#set alt_ipath $[alt_ipath] $[$[package]_ipath]
#end package
@ -359,11 +361,11 @@
// target claims to require. This returns a space-separated set of
// directory names only; the -L switch is not included here.
#defun get_lpath
#define alt_lpath $[stl_lpath] $[nspr_lpath] $[python_lpath]
#if $[WINDOWS_PLATFORM]
#set alt_lpath $[WIN32_PLATFORMSDK_LIBPATH] $[alt_lpath]
#endif
#define alt_lpath $[if $[IGNORE_LIB_DEFAULTS_HACK],,$[stl_lpath] $[nspr_lpath] $[python_lpath]]
#if $[WINDOWS_PLATFORM]
#set alt_lpath $[WIN32_PLATFORMSDK_LIBPATH] $[alt_lpath]
#endif
#foreach package $[use_packages]
#set alt_lpath $[alt_lpath] $[$[package]_lpath]
@ -378,7 +380,7 @@
// space-separated set of library names only; the -l switch is not
// included here.
#defun get_libs
#define alt_libs $[stl_libs] $[nspr_libs] $[python_libs] $[TARGET_LIBS]
#define alt_libs $[if $[IGNORE_LIB_DEFAULTS_HACK],,$[stl_libs] $[nspr_libs] $[python_libs]]
#if $[WINDOWS_PLATFORM]
#set alt_libs $[alt_libs] $[WIN_SYS_LIBS] $[components $[WIN_SYS_LIBS],$[active_component_libs] $[transitive_link]]
@ -412,7 +414,7 @@
$[dependencies $[source]]
#endif
#end get_depends
// This function determines the set of libraries our various targets
// depend on. This is a complicated definition. It is the union of
@ -425,7 +427,7 @@
// the same as case (b) above.
#defun get_depend_libs
#define depend_libs
#forscopes lib_target noinst_lib_target
#forscopes lib_target noinst_lib_target test_lib_target
#define metalib $[module $[TARGET],$[TARGET]]
#if $[ne $[metalib],]
// This library is included on a metalib.
@ -455,8 +457,8 @@
#endif
#end depend
#endif
#end lib_target noinst_lib_target
#end lib_target noinst_lib_target test_lib_target
// These will never be part of a metalib.
#forscopes static_lib_target ss_lib_target bin_target noinst_bin_target metalib_target
#foreach depend $[LOCAL_LIBS]

View File

@ -55,15 +55,25 @@
// $[lib_targets] will be the list of dynamic libraries,
// $[static_lib_targets] the list of static libraries, and
// $[bin_targets] the list of binaries. $[test_bin_targets] is the
// list of binaries that are to be built only when specifically asked
// for.
#define lib_targets $[patsubst %,$[ODIR]/lib%$[dllext].$[dlllib],$[active_target(metalib_target noinst_lib_target)] $[real_lib_targets]]
#define static_lib_targets $[active_target(static_lib_target ss_lib_target):%=$[ODIR]/lib%$[dllext].lib]
// list of binaries that are to be built only when specifically asked for.
// #set requires pre-existing vars
#define lib_targets
#define static_lib_targets
#forscopes lib_target noinst_lib_target test_lib_target
// get_dllname() needs to be evaluated in its lib's scope, but we need to build a global list, so use #set
#set lib_targets $[patsubst %,$[ODIR]/$[get_dllname %].$[dlllib],$[active_target(metalib_target noinst_lib_target test_lib_target)] $[real_lib_targets]]
#set static_lib_targets $[active_target(static_lib_target ss_lib_target):%=$[ODIR]/$[get_dllname %].lib]
#end lib_target noinst_lib_target test_lib_target
#define bin_targets \
$[active_target(bin_target noinst_bin_target):%=$[ODIR]/%.exe] \
$[active_target(sed_bin_target):%=$[ODIR]/%]
#define test_bin_targets $[active_target(test_bin_target):%=$[ODIR]/%.exe]
#defer test_lib_targets $[active_target(test_lib_target):%=$[if $[TEST_ODIR],$[TEST_ODIR],$[ODIR]]/%.$[dlllib]]
// And these variables will define the various things we need to
// install.
#define install_lib $[active_target(metalib_target static_lib_target ss_lib_target)] $[real_lib_targets]
@ -77,15 +87,15 @@
// These are the various sources collected from all targets within the
// directory.
#define st_sources $[sort $[compile_sources(metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target)]]
#define yxx_st_sources $[sort $[yxx_sources(metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target)]]
#define lxx_st_sources $[sort $[lxx_sources(metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target)]]
#define dep_sources_1 $[sort $[get_sources(metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target)]]
#define st_sources $[sort $[compile_sources(metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target)]]
#define yxx_st_sources $[sort $[yxx_sources(metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target)]]
#define lxx_st_sources $[sort $[lxx_sources(metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target)]]
#define dep_sources_1 $[sort $[get_sources(metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target)]]
// These are the source files that our dependency cache file will
// depend on. If it's an empty list, we won't bother writing rules to
// freshen the cache file.
#define dep_sources $[sort $[filter %.c %.cxx %.yxx %.lxx %.h %.I %.T,$[dep_sources_1]]]
#define dep_sources $[sort $[filter %.c %.cxx %.cpp %.yxx %.lxx %.h %.I %.T,$[dep_sources_1]]]
#endif // $[build_directory]
@ -107,8 +117,10 @@
// tree) we should add to our -I list. It's basically just one for
// each directory named in the $[complete_local_libs], above, plus
// whatever else the user might have explicitly named in
// $[LOCAL_INCS].
#defer complete_ipath $[all_libs $[RELDIR],$[complete_local_libs]] $[RELDIR($[LOCAL_INCS:%=%/])]
// $[LOCAL_INCS]. LOCAL_INCS MUST be a ppremake src dir! (RELDIR only checks those)
// To add an arbitrary extra include dir, define EXTRA_IPATH in the Sources.pp
#defer complete_ipath $[all_libs $[RELDIR],$[complete_local_libs]] $[RELDIR($[LOCAL_INCS:%=%/])] $[EXTRA_IPATH]
// $[target_ipath] is the proper ipath to put on the command line,
// from the context of a particular target.
@ -150,7 +162,7 @@
// Similarly, we need to ensure that $[ODIR] exists. Trying to make
// the makefiles do this automatically just causes problems with
// multiprocess builds.
#mkdir $[ODIR]
#mkdir $[ODIR] $[TEST_ODIR]
// Pre-compiled headers are one way to speed the compilation of many
// C++ source files that include similar headers, but it turns out a
@ -198,7 +210,7 @@ MAKEFLAGS := -j$[NUMBER_OF_PROCESSORS]
all : $[all_targets]
// The 'test' rule makes all the test_bin_targets.
test : $[test_bin_targets]
test : $[test_bin_targets] $[test_lib_targets]
clean : clean-igate
#if $[st_sources]
@ -343,7 +355,7 @@ igate : $[get_igatedb(metalib_target lib_target ss_lib_target)]
#define varname $[subst -,_,lib$[TARGET]_so]
$[varname] = $[sources]
#define target $[ODIR]/lib$[TARGET]$[dllext].$[dlllib]
#define target $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
#define sources $($[varname])
#define flags $[get_cflags] $[C++FLAGS] $[CFLAGS_OPT$[OPTIMIZE]] $[CFLAGS_SHARED] $[building_var:%=/D%]
#define mybasename $[basename $[notdir $[target]]]
@ -358,14 +370,14 @@ $[TAB] mkdir -p $[tmpdirname_cyg] // this dir-creation-stuff is leftover from
#define VER_RESOURCE "$[tmpdirname_win]\$[mybasename].res"
$[TAB] cl /nologo /EP "$[dtool_ver_dir]\verdate.cpp" > "$[tmpdirname_win]\verdate.h"
$[TAB] rc /n /I"$[tmpdirname_win]" $[DECYGWINED_INC_PATHLIST_ARGS] /fo$[VER_RESOURCE] $[filter /D%, $[flags]] "$[dtool_ver_dir]\version.rc"
#if $[filter %.cxx %.yxx %.lxx,$[get_sources]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[SHARED_LIB_C++] $[VER_RESOURCE]
#else
$[TAB] $[SHARED_LIB_C] $[VER_RESOURCE]
#endif
#else
.NOTPARALLEL $[target] : $[sources] $[dtool_ver_dir_cyg]/$[DLLBASEADDRFILENAME]
#if $[filter %.cxx %.yxx %.lxx,$[get_sources]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[SHARED_LIB_C++]
#else
$[TAB] $[SHARED_LIB_C]
@ -373,10 +385,10 @@ $[TAB] $[SHARED_LIB_C]
#endif
#if $[build_dlls]
$[ODIR]/lib$[TARGET]$[dllext].lib : $[ODIR]/lib$[TARGET]$[dllext].dll
$[ODIR]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]].dll
#endif
#if $[build_pdbs]
$[ODIR]/lib$[TARGET]$[dllext].pdb : $[ODIR]/lib$[TARGET]$[dllext].dll
$[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]].dll
#endif
#endif
@ -385,9 +397,9 @@ $[ODIR]/lib$[TARGET]$[dllext].pdb : $[ODIR]/lib$[TARGET]$[dllext].dll
// everything that goes along with it.
#define installed_files \
$[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] \
$[if $[build_dlls],$[install_lib_dir]/$[get_dllname $[TARGET]].dll] \
$[install_lib_dir]/$[get_dllname $[TARGET]].lib \
$[if $[and $[build_dlls],$[build_pdbs]],$[install_lib_dir]/$[get_dllname $[TARGET]].pdb] \
] \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
$[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
@ -403,20 +415,20 @@ $[TAB] rm -f $[sort $[installed_files]]
#endif
#if $[build_dlls]
$[install_lib_dir]/lib$[TARGET]$[dllext].dll : $[ODIR]/lib$[TARGET]$[dllext].dll
#define local lib$[TARGET]$[dllext].dll
$[install_lib_dir]/$[get_dllname $[TARGET]].dll : $[ODIR]/$[get_dllname $[TARGET]].dll
#define local $[get_dllname $[TARGET]].dll
#define dest $[install_lib_dir]
$[TAB] cp -f $[ODIR]/$[local] $[dest]
#endif
$[install_lib_dir]/lib$[TARGET]$[dllext].lib : $[ODIR]/lib$[TARGET]$[dllext].lib
#define local lib$[TARGET]$[dllext].lib
$[install_lib_dir]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]].lib
#define local $[get_dllname $[TARGET]].lib
#define dest $[install_lib_dir]
$[TAB] cp -f $[ODIR]/$[local] $[dest]
#if $[and $[build_dlls],$[build_pdbs]]
$[install_lib_dir]/lib$[TARGET]$[dllext].pdb : $[ODIR]/lib$[TARGET]$[dllext].pdb
#define local lib$[TARGET]$[dllext].pdb
$[install_lib_dir]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]].pdb
#define local $[get_dllname $[TARGET]].pdb
#define dest $[install_lib_dir]
$[TAB] cp -f $[ODIR]/$[local] $[dest]
#endif
@ -470,8 +482,6 @@ $[TAB] $[INTERROGATE_MODULE] -oc $[target] -module "$[igatemod]" -library "$[iga
#end metalib_target lib_target
/////////////////////////////////////////////////////////////////////
// Now, the noninstalled dynamic libraries. These are presumably used
// only within this directory, or at the most within this tree, and
@ -480,27 +490,72 @@ $[TAB] $[INTERROGATE_MODULE] -oc $[target] -module "$[igatemod]" -library "$[iga
// lot simpler.
/////////////////////////////////////////////////////////////////////
#forscopes noinst_lib_target
#forscopes noinst_lib_target test_lib_target
#define varname $[subst -,_,lib$[TARGET]_so]
$[varname] = $[patsubst %,$[%_obj],$[compile_sources]]
#define target $[ODIR]/lib$[TARGET]$[dllext].$[dlllib]
#define target $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
#define sources $($[varname])
$[target] : $[sources] $[static_lib_dependencies]
#if $[filter %.cxx %.yxx %.lxx,$[get_sources]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[SHARED_LIB_C++]
#else
$[TAB] $[SHARED_LIB_C]
$[TAB] $[SHARED_LIB_C] $[COMPILED_RESOURCES]
#endif
#if $[build_dlls]
$[ODIR]/lib$[TARGET]$[dllext].lib : $[ODIR]/lib$[TARGET]$[dllext].dll
$[ODIR]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]].dll
#endif
#if $[build_pdbs]
$[ODIR]/lib$[TARGET]$[dllext].pdb : $[ODIR]/lib$[TARGET]$[dllext].dll
$[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]].dll
#endif
#end noinst_lib_target
// this section is all very clunky and not generalized enough
// assuming tgt dirs and such
#define rc_to_gen $[filter %.rc, $[GENERATED_SOURCES]]
#if $[rc_to_gen]
$[rc_to_gen] : $[GENERATED_RC_DEPENDENCIES]
$[TAB] $[RC_GENERATOR_RULE]
$[ODIR]/$[RC_BASENAME].res : $[rc_to_gen]
$[TAB] $[COMPILE_RC] /I"$[ODIR]" /Fo"$[ODIR]/$[RC_BASENAME].res" $[ODIR]/$[RC_BASENAME].rc
#endif
#define inf_to_gen $[filter %.inf, $[GENERATED_SOURCES]]
#if $[inf_to_gen]
$[inf_to_gen] : $[GENERATED_INF_DEPENDENCIES]
$[TAB] $[INF_GENERATOR_RULE]
#endif
#define rgs_to_gen $[filter %.rgs, $[GENERATED_SOURCES]]
#if $[rgs_to_gen]
$[rgs_to_gen] : $[GENERATED_RGS_DEPENDENCIES]
$[TAB] $[RGS_GENERATOR_RULE]
#endif
#define MIDL_COMMAND $[COMPILE_IDL] /cstub $[ODIR]/$[IDL_BASENAME].cpp /tlb $[ODIR]/$[IDL_BASENAME].tlb /h $[ODIR]/$[IDL_BASENAME].h /proxy $[ODIR]/$[IDL_BASENAME]_p.c /dlldata $[ODIR]/dlldata.c /iid $[ODIR]/$[IDL_BASENAME]_i.c $[ODIR]/$[IDL_BASENAME].idl
#define idl_to_gen $[filter %.idl, $[GENERATED_SOURCES]]
#if $[idl_to_gen]
$[idl_to_gen] : $[GENERATED_IDL_DEPENDENCIES]
$[TAB] $[IDL_GENERATOR_RULE]
.NOTPARALLEL $[ODIR]/$[IDL_BASENAME].h : $[idl_to_gen]
$[TAB] $[MIDL_COMMAND]
// this is a complete hack. I dont know how add a generated .h to the dependency list of $[IDL_BASENAME].cpp.
// it is already there, but in the wrong directory. should really add this to official dependency list
#foreach file $[GENERATED_IDL_H_DEPENDENTS]
$[file] : $[ODIR]/$[IDL_BASENAME].h
$[TAB] // empty, dependency-only 'rule'
#end file
$[ODIR]/$[IDL_BASENAME].tlb : $[idl_to_gen]
$[TAB] $[MIDL_COMMAND]
#endif
#end noinst_lib_target test_lib_target
/////////////////////////////////////////////////////////////////////
@ -512,17 +567,17 @@ $[ODIR]/lib$[TARGET]$[dllext].pdb : $[ODIR]/lib$[TARGET]$[dllext].dll
#forscopes static_lib_target ss_lib_target
#define varname $[subst -,_,lib$[TARGET]_a]
$[varname] = $[patsubst %,$[%_obj],$[compile_sources]]
#define target $[ODIR]/lib$[TARGET]$[dllext].lib
#define target $[ODIR]/$[get_dllname $[TARGET]].lib
#define sources $($[varname])
$[target] : $[sources]
#if $[filter %.cxx %.yxx %.lxx,$[get_sources]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[STATIC_LIB_C++]
#else
$[TAB] $[STATIC_LIB_C]
#endif
#define installed_files \
$[install_lib_dir]/lib$[TARGET]$[dllext].lib \
$[install_lib_dir]/$[get_dllname $[TARGET]].lib \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
$[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
$[INSTALL_DATA:%=$[install_data_dir]/%] \
@ -535,8 +590,8 @@ uninstall-lib$[TARGET] :
$[TAB] rm -f $[sort $[installed_files]]
#endif
$[install_lib_dir]/lib$[TARGET]$[dllext].lib : $[ODIR]/lib$[TARGET]$[dllext].lib
#define local lib$[TARGET]$[dllext].lib
$[install_lib_dir]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]].lib
#define local $[get_dllname $[TARGET]].lib
#define dest $[install_lib_dir]
$[TAB] cp -f $[ODIR]/$[local] $[dest]
@ -597,7 +652,7 @@ $[target] : $[sources] $[static_lib_dependencies]
$[TAB] $[ld] -o $[target] $[sources] $[lpath:%=-L%] $[libs:%=-l%]
#else
// Otherwise, we can use the normal linker.
#if $[filter %.cxx %.yxx %.lxx,$[get_sources]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[LINK_BIN_C++]
#else
$[TAB] $[LINK_BIN_C]
@ -655,7 +710,7 @@ $[TAB] cp -f $[output_exe] $[install_bin_dir]
// of being built (when requested), but having no install rules.
/////////////////////////////////////////////////////////////////////
#forscopes noinst_bin_target test_bin_target
#forscopes noinst_bin_target test_bin_target test_lib_target
$[TARGET] : $[ODIR]/$[TARGET].exe
#define varname $[subst -,_,bin_$[TARGET]]
@ -663,13 +718,13 @@ $[varname] = $[patsubst %,$[%_obj],$[compile_sources]]
#define target $[ODIR]/$[TARGET].exe
#define sources $($[varname])
$[target] : $[sources] $[static_lib_dependencies]
#if $[filter %.cxx %.yxx %.lxx,$[get_sources]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[LINK_BIN_C++]
#else
$[TAB] $[LINK_BIN_C]
#endif
#end noinst_bin_target test_bin_target
#end noinst_bin_target test_bin_target test_lib_target
/////////////////////////////////////////////////////////////////////
// Rules to run bison and/or flex as needed.
@ -727,7 +782,11 @@ $[TAB] cp $[target_prebuilt] $[target]
// file.
/////////////////////////////////////////////////////////////////////
#forscopes metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target
#forscopes metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target
// need to use #print to avoid printing to Makefile
// printvar prints the unevaluated defn of the var
// #print TARGET=$[TARGET]
// #printvar TARGET
// Rules to compile ordinary C files.
#foreach file $[sort $[c_sources]]
@ -766,7 +825,7 @@ $[TAB] $[COMPILE_C++]
#end file
#end metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target
#end metalib_target lib_target noinst_lib_target static_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target
// And now the rules to install the auxiliary files, like headers and
// data files.
@ -969,3 +1028,4 @@ $[TAB] cp -f $[local] $[dest]
//////////////////////////////////////////////////////////////////////
#endif // DIR_TYPE

View File

@ -4,199 +4,206 @@
#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 /G6 $[if $[ne $[FAST_FLT_TO_INT],], /QIfist,]
#define OPT1FLAGS /GZ
#define OPTFLAGS /O2 /Ob1 /G6 $[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 DEBUGPDBFLAGS /Zi /Fd"$[osfilename $[patsubst %.obj,%.pdb,$[target]]]"
#defer DEBUGFLAGS /MDd $[BROWSEINFO_FLAG] $[DEBUGINFOFLAGS] $[DEBUGPDBFLAGS]
#define RELEASEFLAGS /MD
#define WARNING_LEVEL_FLAG /W3
// 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 WARNING_LEVEL_FLAG /W3
// 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
#define PROFILE_FLAG /PROFILE
#else
#define PROFILE_FLAG
#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 /WARN:3
// in case we have mixed intel/msvc build
#define EXTRA_LIBPATH /ia32/lib
#define EXTRA_INCPATH /ia32/include
// Note: all Opts will link w/debug info now
#define LINKER_FLAGS /DEBUG /DEBUGTYPE:CV $[PROFILE_FLAG] /MAP $[MAPINFOFLAGS] /fixed:no /incremental:no /WARN:3
// 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
#endif
// ensure pdbs are copied to install dir
#define build_pdbs yes
#define build_pdbs yes
#define STL_ALLOCATOR VC6
#elif $[or $[eq $[USE_COMPILER], MSVC7], $[eq $[USE_COMPILER], MSVC7_1]]
#define COMPILER cl
#define LINKER link
#define LIBBER lib
#if $[eq $[USE_COMPILER], MSVC7]
#if $[eq $[USE_COMPILER], MSVC7]
// What is the syntax of the STL allocator declaration? See
// LocalSetup.pp for allowable values.
#define STL_ALLOCATOR MODERN
#else
// until I figure out how to get rid of 'rebind' vc7.1 C4346 build errors
#define STL_ALLOCATOR UNKNOWN
#endif
#endif
#if $[eq $[NO_CROSSOBJ_OPT],]
#define DO_CROSSOBJ_OPT 1
#endif
#endif
#if $[DO_CROSSOBJ_OPT]
#define OPT4FLAGS /GL
#define LDFLAGS_OPT4 /LTCG
#if $[>= $[OPTIMIZE],4]
#if $[>= $[OPTIMIZE],4]
#define LIBBER $[LIBBER] /LTCG
#endif
#endif
#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
// 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
#define OPTFLAGS /O2 /Ob2 /G6 $[if $[ne $[FAST_FLT_TO_INT],], /QIfist,]
// #define OPT1FLAGS /RTCsu /GS removing /RTCu because it crashes in dxgsg with internal compiler bug
#define REGULAR_OPTFLAGS /O2 /Ob2 /G6 $[if $[ne $[FAST_FLT_TO_INT],], /QIfist,]
#defer OPTFLAGS $[if $[OPT_MINSIZE],/O1 /Og /Ob1 /Oi /Os /G6,$[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 /Wall //this is scary
// #define WARNING_LEVEL_FLAG /Wall //this is scary
#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]]]"
#defer DEBUGFLAGS /MDd $[BROWSEINFO_FLAG] $[DEBUGINFOFLAGS] $[DEBUGPDBFLAGS]
#define RELEASEFLAGS /MD
#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],],/MT, /MDd] $[BROWSEINFO_FLAG] $[DEBUGINFOFLAGS] $[DEBUGPDBFLAGS]
#defer RELEASEFLAGS $[if $[ne $[LINK_FORCE_STATIC_RELEASE_C_RUNTIME],],/MT, /MD]
#define MAPINFOFLAGS /MAPINFO:EXPORTS /MAPINFO:LINES
#if $[ENABLE_PROFILING]
#define PROFILE_FLAG /FIXED:NO
#else
#define PROFILE_FLAG
#define PROFILE_FLAG
#endif
#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 $[PROFILE_FLAG] /MAP $[MAPINFOFLAGS] /fixed:no /incremental:no
#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
// in case we have mixed intel/msvc build
// #define EXTRA_LIBPATH /ia32/lib
// #define EXTRA_INCPATH /ia32/include
// #define EXTRA_INCPATH /ia32/include
// ensure pdbs are copied to install dir
#define build_pdbs yes
#define build_pdbs yes
#elif $[eq $[USE_COMPILER], INTEL]
#define COMPILER icl
#define LINKER xilink
#define LIBBER xilib
#define COMMONFLAGS /DHAVE_DINKUM /Gi- /Qwd985 /Qvc7 /G6
#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]]]"
#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 DEBUGFLAGS /Oy- /MDd $[BROWSEINFO_FLAG] $[DEBUGINFOFLAGS] $[DEBUGPDBFLAGS]
#define RELEASEFLAGS /MD
#define WARNING_LEVEL_FLAG /W3
#define WARNING_LEVEL_FLAG /W3
#if $[DO_CROSSOBJ_OPT]
#define OPT4FLAGS /Qipo
#define LDFLAGS_OPT4 /Qipo
#endif
#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_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 /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 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
#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
#endif
// Note: all Opts will link w/debug info now
#define LINKER_FLAGS /DEBUG /DEBUGTYPE:CV $[PROFILE_FLAG] /MAP $[MAPINFOFLAGS] /fixed:no /incremental:no
// ensure pdbs are copied to install dir
#define build_pdbs yes
#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]]]"
#define OPT1FLAGS /GZ
#defer DEBUGPDBFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[patsubst %.obj,%.pdb,$[target]]]"
#define RELEASEFLAGS /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
// 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
#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
// 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]]]"
#define OPT1FLAGS /GZ
#defer DEBUGPDBFLAGS /MDd /Zi $[BROWSEINFO_FLAG] /Fd"$[osfilename $[patsubst %.obj,%.pdb,$[target]]]"
#define RELEASEFLAGS /MD
#define EXTRA_LIBPATH
#define EXTRA_INCPATH
@ -205,14 +212,14 @@
#endif
#if $[CHECK_SYNTAX_ONLY]
#define END_CFLAGS $[END_CFLAGS] /Zs
#endif
#define END_CFLAGS $[END_CFLAGS] /Zs
#endif
#if $[GEN_ASSEMBLY]
#define END_CFLAGS $[END_CFLAGS] /FAs
#endif
#endif
#if $[PREPROCESSOR_OUTPUT]
#define END_CFLAGS $[END_CFLAGS] /E
#endif
#define END_CFLAGS $[END_CFLAGS] /E
#endif