better LINK_ALL_STATIC support

This commit is contained in:
David Rose 2009-06-15 20:14:39 +00:00
parent 98902127b1
commit d2aa0ecba4
9 changed files with 221 additions and 306 deletions

View File

@ -166,6 +166,7 @@
// The dynamic library file extension (usually .so .dll or .dylib): // The dynamic library file extension (usually .so .dll or .dylib):
#define DYNAMIC_LIB_EXT .dll #define DYNAMIC_LIB_EXT .dll
#define STATIC_LIB_EXT .lib
#define BUNDLE_EXT #define BUNDLE_EXT

View File

@ -923,6 +923,28 @@
// dynamic libraries. // dynamic libraries.
//#define LINK_ALL_STATIC yes //#define LINK_ALL_STATIC yes
// The panda source tree is made up of a bunch of component libraries
// (e.g. express, downloader, pgraph, egg) which are ultimately
// combined into a smaller group of meta libraries or metalibs
// (e.g. libpandaexpress, libpanda, libpandaegg). Depending on your
// build configuration, these component libraries might have their own
// existence, or they might disappear completely and be contained
// entirely within their metalibs. The former is more convenient for
// rapid development, while the latter might be more convenient for
// distribution.
// Define this variable to compile and link each component as a
// separate library so that the resulting metalibs are small and there
// are many separate component libraries; leave it undefined to link
// component object files directly into their containing metalibs so
// that the resutling metalib files are large and component libraries
// don't actually exist. The Windows has traditionally been built
// with this cleared (because of the original Win32 STL requirements),
// while the Unix build has traditionally been built with it set.
// Changing this from the traditional platform-specific setting is not
// 100% supported yet.
#define BUILD_COMPONENTS $[not $[WINDOWS_PLATFORM]]
// Define this to export the templates from the DLL. This is only // Define this to export the templates from the DLL. This is only
// meaningful if LINK_ALL_STATIC is not defined, and we are building // meaningful if LINK_ALL_STATIC is not defined, and we are building
// on Windows. Some Windows compilers may not support this syntax. // on Windows. Some Windows compilers may not support this syntax.

View File

@ -44,22 +44,21 @@
// $[compile_sources] from the different directories. // $[compile_sources] from the different directories.
#define composite_list #define composite_list
// Tag all the static libraries by defining the "lib_is_static" variable. // Tag all the static libraries by defining the "lib_is_static" variable.
#if $[WINDOWS_PLATFORM]
#forscopes static_lib_target ss_lib_target
#define lib_is_static 1
#end static_lib_target ss_lib_target
#else
#forscopes static_lib_target #forscopes static_lib_target
#define lib_is_static 1 #define lib_is_static 1
#end static_lib_target #end static_lib_target
#if $[WINDOWS_PLATFORM]
#forscopes ss_lib_target
#define lib_is_static 1
#end ss_lib_target
#endif #endif
#if $[LINK_ALL_STATIC] #if $[LINK_ALL_STATIC]
#forscopes ss_lib_target lib_target #forscopes metalib_target ss_lib_target lib_target
#define lib_is_static 1 #define lib_is_static 1
#end ss_lib_target lib_target #end metalib_target ss_lib_target lib_target
#endif #endif
#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 #forscopes metalib_target lib_target noinst_lib_target test_lib_target static_lib_target dynamic_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 // 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 // deferred variables defined in Globals.pp. This way they won't need
// to get repeatedly reevaluated as each directory examines each // to get repeatedly reevaluated as each directory examines each
@ -163,7 +162,7 @@
#define compile_sources $[c_sources] $[cxx_sources] $[cxx_interrogate_sources] #define compile_sources $[c_sources] $[cxx_sources] $[cxx_interrogate_sources]
#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 #end metalib_target lib_target noinst_lib_target test_lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target
// Allow the user to define additional EXTRA_DEPENDS targets in each // Allow the user to define additional EXTRA_DEPENDS targets in each
// Sources.pp. // Sources.pp.

View File

@ -55,17 +55,6 @@
#define CFLAGS_SHARED #define CFLAGS_SHARED
// Define LINK_ALL_STATIC to generate static libs instead of DLL's.
#if $[ne $[LINK_ALL_STATIC],]
#define build_dlls
#define build_libs yes
#define dlllib lib
#else
#define build_dlls yes
#define build_libs
#define dlllib dll
#endif
#include $[THISDIRPREFIX]compilerSettings.pp #include $[THISDIRPREFIX]compilerSettings.pp
#if $[TEST_INLINING] #if $[TEST_INLINING]
@ -164,9 +153,3 @@
#defer LINK_BIN_C $[LINKER] /nologo $[LDFLAGS_OPT$[OPTIMIZE]] $[sources] $[decygwin %,/LIBPATH:"%",$[lpath] $[EXTRA_LIBPATH] $[tau_lpath]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]] $[tau_libs] /OUT:"$[osfilename $[target]]"$[if $[eq $[USE_COMPILER], MSVC9],; $[MT_BIN] -nologo -manifest $[target].manifest -outputresource:$[target]\;1,] #defer LINK_BIN_C $[LINKER] /nologo $[LDFLAGS_OPT$[OPTIMIZE]] $[sources] $[decygwin %,/LIBPATH:"%",$[lpath] $[EXTRA_LIBPATH] $[tau_lpath]] $[patsubst %.lib,%.lib,%,lib%.lib,$[libs]] $[tau_libs] /OUT:"$[osfilename $[target]]"$[if $[eq $[USE_COMPILER], MSVC9],; $[MT_BIN] -nologo -manifest $[target].manifest -outputresource:$[target]\;1,]
#defer LINK_BIN_C++ $[LINK_BIN_C] #defer LINK_BIN_C++ $[LINK_BIN_C]
#if $[ne $[LINK_ALL_STATIC],]
#defer SHARED_LIB_C $[STATIC_LIB_C]
#defer SHARED_LIB_C++ $[STATIC_LIB_C++]
#defer ODIR_SHARED $[ODIR_STATIC]
#endif

View File

@ -34,27 +34,13 @@
// variable as set for the dconfig library (that is, the expression // variable as set for the dconfig library (that is, the expression
// $[SOURCES] is evaluated within the named scope whose key is // $[SOURCES] is evaluated within the named scope whose key is
// "dconfig"--whose variable $[TARGET] was defined to be "dconfig"). // "dconfig"--whose variable $[TARGET] was defined to be "dconfig").
#map all_libs TARGET(*/static_lib_target */ss_lib_target */lib_target */noinst_lib_target */test_lib_target */metalib_target) #map all_libs TARGET(*/static_lib_target */dynamic_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 // 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. // be defined in a particular Sources.pp, e.g. in the "toplevel" file.
#map dir_type DIR_TYPE(*/) #map dir_type DIR_TYPE(*/)
// These allow us to determine whether a particular local library is a #map libs TARGET(*/lib_target */static_lib_target */dynamic_lib_target */ss_lib_target */noinst_lib_target */test_lib_target */metalib_target)
// static or a dynamic library. If the library name appears in the
// static_libs map, it is a static library (i.e. libname.a);
// otherwise, it is a dynamic library (libname.so). The target
// ss_lib_target is a special case: these libraries are dynamic where
// it's easy to make them so (e.g. on Unix platforms), and static on
// platforms where dynamic libraries aren't quite so robust (e.g. on
// Windows).
#if $[WINDOWS_PLATFORM]
#map static_libs TARGET(*/static_lib_target */ss_lib_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 */test_lib_target */metalib_target)
#endif
// This lets us identify which metalib, if any, is including each // This lets us identify which metalib, if any, is including each
// named library. That is, $[module $[TARGET],name] will return // named library. That is, $[module $[TARGET],name] will return
@ -441,6 +427,8 @@
#defer link_bin_c++ $(TAU_COMPILER) $[TAU_OPTS] $[if $[SELECT_TAU],-optTauSelectFile=$[SELECT_TAU]] $[LINK_BIN_C++] $[TAU_CFLAGS] $[TAU_C++FLAGS] #defer link_bin_c++ $(TAU_COMPILER) $[TAU_OPTS] $[if $[SELECT_TAU],-optTauSelectFile=$[SELECT_TAU]] $[LINK_BIN_C++] $[TAU_CFLAGS] $[TAU_C++FLAGS]
#defer shared_lib_c $(TAU_COMPILER) $[TAU_OPTS] $[if $[SELECT_TAU],-optTauSelectFile=$[SELECT_TAU]] $[SHARED_LIB_C] $[TAU_CFLAGS] #defer shared_lib_c $(TAU_COMPILER) $[TAU_OPTS] $[if $[SELECT_TAU],-optTauSelectFile=$[SELECT_TAU]] $[SHARED_LIB_C] $[TAU_CFLAGS]
#defer shared_lib_c++ $(TAU_COMPILER) $[TAU_OPTS] $[if $[SELECT_TAU],-optTauSelectFile=$[SELECT_TAU]] $[SHARED_LIB_C++] $[TAU_CFLAGS] $[TAU_C++FLAGS] #defer shared_lib_c++ $(TAU_COMPILER) $[TAU_OPTS] $[if $[SELECT_TAU],-optTauSelectFile=$[SELECT_TAU]] $[SHARED_LIB_C++] $[TAU_CFLAGS] $[TAU_C++FLAGS]
#defer static_lib_c $[STATIC_LIB_C]
#defer static_lib_c++ $[STATIC_LIB_C++]
#else #else
#defer compile_c $[COMPILE_C] #defer compile_c $[COMPILE_C]
@ -449,17 +437,29 @@
#defer link_bin_c++ $[LINK_BIN_C++] #defer link_bin_c++ $[LINK_BIN_C++]
#defer shared_lib_c $[SHARED_LIB_C] #defer shared_lib_c $[SHARED_LIB_C]
#defer shared_lib_c++ $[SHARED_LIB_C++] #defer shared_lib_c++ $[SHARED_LIB_C++]
#defer static_lib_c $[STATIC_LIB_C]
#defer static_lib_c++ $[STATIC_LIB_C++]
#endif // USE_TAU #endif // USE_TAU
#defer link_lib_c $[if $[lib_is_static],$[static_lib_c],$[shared_lib_c]]
#defer link_lib_c++ $[if $[lib_is_static],$[static_lib_c++],$[shared_lib_c++]]
#defer dynamic_lib_ext $[DYNAMIC_LIB_EXT] #defer dynamic_lib_ext $[DYNAMIC_LIB_EXT]
#defer static_lib_ext $[STATIC_LIB_EXT]
#defer lib_ext $[if $[lib_is_static],$[static_lib_ext],$[dynamic_lib_ext]]
#defer bundle_ext $[BUNDLE_EXT] #defer bundle_ext $[BUNDLE_EXT]
#if $[LINK_ALL_STATIC] // If BUILD_COMPONENTS is not true, we don't actually build all the
#defer shared_lib_c $[STATIC_LIB_C] // libraries. In particular, we don't build any libraries that are
#defer shared_lib_c++ $[STATIC_LIB_C++] // listed on a metalib. This variable can be evaluated within a
#defer dynamic_lib_ext $[STATIC_LIB_EXT] // library's scope to determine whether it should be built according
#defer bundle_ext // to this rule.
#endif // LINK_ALL_STATIC #defer build_lib $[or $[BUILD_COMPONENTS],$[eq $[module $[TARGET],$[TARGET]],]]
// This variable is true if the lib has an associated pdb (Windows
// only). It appears that pdb's are generated only for dll's, not for
// static libs.
#defer has_pdb $[and $[build_pdbs],$[not $[lib_is_static]]]
// This takes advantage of the above two variables to get the actual // This takes advantage of the above two variables to get the actual
@ -493,6 +493,7 @@
// string if the target is not to be built, or the target name if it // string if the target is not to be built, or the target name if it
// is. // is.
#defer active_target $[if $[build_target],$[TARGET]] #defer active_target $[if $[build_target],$[TARGET]]
#defer active_target_libext $[if $[build_target],$[TARGET]$[lib_ext]]
#defer get_combined_sources $[COMBINED_SOURCES] #defer get_combined_sources $[COMBINED_SOURCES]
// This subroutine will set up the sources variable to reflect the // This subroutine will set up the sources variable to reflect the
@ -725,7 +726,7 @@
#end lib_target noinst_lib_target test_lib_target #end lib_target noinst_lib_target test_lib_target
// These will never be part of a metalib. // These will never be part of a metalib.
#forscopes static_lib_target ss_lib_target bin_target noinst_bin_target metalib_target #forscopes static_lib_target dynamic_lib_target ss_lib_target bin_target noinst_bin_target metalib_target
#foreach depend $[LOCAL_LIBS] #foreach depend $[LOCAL_LIBS]
#define depend_metalib $[module $[TARGET],$[depend]] #define depend_metalib $[module $[TARGET],$[depend]]
#if $[ne $[depend_metalib],] #if $[ne $[depend_metalib],]
@ -740,7 +741,7 @@
#set depend_libs $[depend_libs] $[depend] #set depend_libs $[depend_libs] $[depend]
#endif #endif
#end depend #end depend
#end static_lib_target ss_lib_target bin_target noinst_bin_target metalib_target #end static_lib_target dynamic_lib_target ss_lib_target bin_target noinst_bin_target metalib_target
// In case we're defining any metalibs, these depend directly on // In case we're defining any metalibs, these depend directly on
// their components as well. // their components as well.

View File

@ -56,7 +56,7 @@
#if $[eq $[module $[TARGET],$[TARGET]],] #if $[eq $[module $[TARGET],$[TARGET]],]
// This library is not on a metalib, so we can build it. // This library is not on a metalib, so we can build it.
#set real_lib_targets $[real_lib_targets] $[TARGET] #set real_lib_targets $[real_lib_targets] $[TARGET]
#set real_lib_target_libs $[real_lib_target_libs] $[ODIR]/$[get_dllname $[TARGET]].$[dlllib] #set real_lib_target_libs $[real_lib_target_libs] $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#else #else
// This library is on a metalib, so we can't build it, but we // This library is on a metalib, so we can't build it, but we
// should build all the obj's that go into it. // should build all the obj's that go into it.
@ -66,38 +66,37 @@
#end lib_target #end lib_target
// We need to know the various targets we'll be building. // We need to know the various targets we'll be building.
// $[lib_targets] will be the list of dynamic libraries, // $[lib_targets] will be the list of dynamic and static libraries,
// $[static_lib_targets] the list of static libraries, and // and $[bin_targets] the list of binaries. $[test_bin_targets] is
// $[bin_targets] the list of binaries. $[test_bin_targets] is the // the list of binaries that are to be built only when specifically
// list of binaries that are to be built only when specifically asked for. // asked for.
#define lib_targets $[forscopes metalib_target noinst_lib_target test_lib_target,$[if $[build_target],$[ODIR]/$[get_dllname $[TARGET]].$[dlllib]]] $[real_lib_target_libs] #define lib_targets $[forscopes metalib_target noinst_lib_target test_lib_target static_lib_target dynamic_lib_target ss_lib_target,$[if $[build_target],$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]]] $[real_lib_target_libs]
#define static_lib_targets $[forscopes static_lib_target ss_lib_target,$[if $[build_target],$[ODIR]/$[get_dllname $[TARGET]].lib]]
#define bin_targets \ #define bin_targets \
$[active_target(bin_target noinst_bin_target):%=$[ODIR]/%.exe] \ $[active_target(bin_target noinst_bin_target):%=$[ODIR]/%.exe] \
$[active_target(sed_bin_target):%=$[ODIR]/%] $[active_target(sed_bin_target):%=$[ODIR]/%]
#define test_bin_targets $[active_target(test_bin_target):%=$[ODIR]/%.exe] #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]] #defer test_lib_targets $[active_target(test_lib_target):%=$[if $[TEST_ODIR],$[TEST_ODIR],$[ODIR]]/%$[lib_ext]]
// And these variables will define the various things we need to // And these variables will define the various things we need to
// install. // install.
#define install_lib $[active_target(metalib_target static_lib_target ss_lib_target)] $[real_lib_targets] #define install_lib $[active_target(metalib_target static_lib_target dynamic_lib_target ss_lib_target)] $[real_lib_targets]
#define install_bin $[active_target(bin_target)] #define install_bin $[active_target(bin_target)]
#define install_scripts $[sort $[INSTALL_SCRIPTS(metalib_target lib_target static_lib_target ss_lib_target bin_target)] $[INSTALL_SCRIPTS]] #define install_scripts $[sort $[INSTALL_SCRIPTS(metalib_target lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target)] $[INSTALL_SCRIPTS]]
#define install_headers $[sort $[INSTALL_HEADERS(metalib_target lib_target static_lib_target ss_lib_target bin_target)] $[INSTALL_HEADERS]] #define install_headers $[sort $[INSTALL_HEADERS(metalib_target lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target)] $[INSTALL_HEADERS]]
#define install_parser_inc $[sort $[INSTALL_PARSER_INC]] #define install_parser_inc $[sort $[INSTALL_PARSER_INC]]
#define install_data $[sort $[INSTALL_DATA(metalib_target lib_target static_lib_target ss_lib_target bin_target)] $[INSTALL_DATA]] #define install_data $[sort $[INSTALL_DATA(metalib_target lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target)] $[INSTALL_DATA]]
#define install_config $[sort $[INSTALL_CONFIG(metalib_target lib_target static_lib_target ss_lib_target bin_target)] $[INSTALL_CONFIG]] #define install_config $[sort $[INSTALL_CONFIG(metalib_target lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target)] $[INSTALL_CONFIG]]
#define install_igatedb $[sort $[get_igatedb(metalib_target lib_target)]] #define install_igatedb $[sort $[get_igatedb(metalib_target lib_target)]]
// These are the various sources collected from all targets within the // These are the various sources collected from all targets within the
// directory. // 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 test_lib_target)]] #define st_sources $[sort $[compile_sources(metalib_target lib_target noinst_lib_target static_lib_target dynamic_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 yxx_st_sources $[sort $[yxx_sources(metalib_target lib_target noinst_lib_target static_lib_target dynamic_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 lxx_st_sources $[sort $[lxx_sources(metalib_target lib_target noinst_lib_target static_lib_target dynamic_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)]] #define dep_sources_1 $[sort $[get_sources(metalib_target lib_target noinst_lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target)]]
// If there is an __init__.py in the directory, then all Python // If there is an __init__.py in the directory, then all Python
// files in the directory just get installed without having to be // files in the directory just get installed without having to be
@ -120,7 +119,7 @@
// with that happen to be static libs. We will introduce dependency // with that happen to be static libs. We will introduce dependency
// rules for these. (We don't need dependency rules for dynamic libs, // rules for these. (We don't need dependency rules for dynamic libs,
// since these don't get burned in at build time.) // since these don't get burned in at build time.)
#defer static_lib_dependencies $[all_libs $[if $[lib_is_static],$[RELDIR:%=%/$[ODIR]/lib$[TARGET]$[dllext].lib]],$[complete_local_libs]] #defer static_lib_dependencies $[all_libs $[if $[and $[lib_is_static],$[build_lib]],$[RELDIR:%=%/$[ODIR]/lib$[TARGET]$[dllext]$[lib_ext]]],$[complete_local_libs]]
// $[target_ipath] is the proper ipath to put on the command line, // $[target_ipath] is the proper ipath to put on the command line,
// from the context of a particular target. // from the context of a particular target.
@ -133,7 +132,7 @@
// $[complete_lpath] is rather like $[complete_ipath]: the list of // $[complete_lpath] is rather like $[complete_ipath]: the list of
// directories (from within this tree) we should add to our -L list. // directories (from within this tree) we should add to our -L list.
#defer complete_lpath $[static_libs $[RELDIR:%=%/$[ODIR]],$[actual_local_libs]] $[dynamic_libs $[RELDIR:%=%/$[ODIR]],$[actual_local_libs]] $[EXTRA_LPATH] #defer complete_lpath $[libs $[RELDIR:%=%/$[ODIR]],$[actual_local_libs]] $[EXTRA_LPATH]
// $[lpath] is like $[target_ipath]: it's the list of directories we // $[lpath] is like $[target_ipath]: it's the list of directories we
// should add to our -L list, from the context of a particular target. // should add to our -L list, from the context of a particular target.
@ -213,7 +212,7 @@
#define all_targets \ #define all_targets \
Makefile \ Makefile \
$[if $[dep_sources],$[DEPENDENCY_CACHE_FILENAME]] \ $[if $[dep_sources],$[DEPENDENCY_CACHE_FILENAME]] \
$[sort $[lib_targets] $[static_lib_targets] $[bin_targets]] \ $[sort $[lib_targets] $[bin_targets]] \
$[deferred_objs] $[deferred_objs]
all : $[all_targets] all : $[all_targets]
@ -221,16 +220,16 @@ all : $[all_targets]
test : $[test_bin_targets] $[test_lib_targets] test : $[test_bin_targets] $[test_lib_targets]
clean : clean-igate clean : clean-igate
#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 #forscopes metalib_target lib_target noinst_lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target
#if $[compile_sources] #if $[compile_sources]
$[TAB] rm -f $[patsubst %,$[%_obj],$[compile_sources]] $[TAB] rm -f $[patsubst %,$[%_obj],$[compile_sources]]
#endif #endif
#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 #end metalib_target lib_target noinst_lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target
#if $[deferred_objs] #if $[deferred_objs]
$[TAB] rm -f $[deferred_objs] $[TAB] rm -f $[deferred_objs]
#endif #endif
#if $[lib_targets] $[static_lib_targets] $[bin_targets] $[test_bin_targets] #if $[lib_targets] $[bin_targets] $[test_bin_targets]
$[TAB] rm -f $[lib_targets] $[static_lib_targets] $[bin_targets] $[test_bin_targets] $[TAB] rm -f $[lib_targets] $[bin_targets] $[test_bin_targets]
#endif #endif
#if $[yxx_st_sources] $[lxx_st_sources] #if $[yxx_st_sources] $[lxx_st_sources]
$[TAB] rm -f $[patsubst %.yxx,%.cxx %.h,$[yxx_st_sources]] $[patsubst %.lxx,%.cxx,$[lxx_st_sources]] $[TAB] rm -f $[patsubst %.yxx,%.cxx %.h,$[yxx_st_sources]] $[patsubst %.lxx,%.cxx,$[lxx_st_sources]]
@ -287,7 +286,7 @@ $[TAB] rm -f $[igatemout] $[$[igatemout]_obj]
$[get_igatedb(metalib_target lib_target ss_lib_target):$[ODIR]/%=$[install_igatedb_dir]/%] $[get_igatedb(metalib_target lib_target ss_lib_target):$[ODIR]/%=$[install_igatedb_dir]/%]
#define install_targets \ #define install_targets \
$[active_target(metalib_target lib_target static_lib_target ss_lib_target):%=install-lib%] \ $[active_target(metalib_target lib_target static_lib_target dynamic_lib_target ss_lib_target):%=install-lib%] \
$[active_target(bin_target sed_bin_target):%=install-%] \ $[active_target(bin_target sed_bin_target):%=install-%] \
$[installed_files] $[installed_files]
@ -295,7 +294,7 @@ install : all $[install_targets]
install-igate : $[sort $[installed_igate_files]] install-igate : $[sort $[installed_igate_files]]
uninstall : $[active_target(metalib_target lib_target static_lib_target ss_lib_target):%=uninstall-lib%] $[active_target(bin_target):%=uninstall-%] uninstall : $[active_target(metalib_target lib_target static_lib_target dynamic_lib_target ss_lib_target):%=uninstall-lib%] $[active_target(bin_target):%=uninstall-%]
#if $[installed_files] #if $[installed_files]
$[TAB] rm -f $[sort $[installed_files]] $[TAB] rm -f $[sort $[installed_files]]
#endif #endif
@ -320,16 +319,10 @@ igate : $[get_igatedb(metalib_target lib_target ss_lib_target)]
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
// First, the dynamic libraries. Each lib_target and metalib_target // First, the dynamic and static libraries.
// is a dynamic library.
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
#forscopes metalib_target lib_target #forscopes metalib_target lib_target static_lib_target dynamic_lib_target
// In Windows, we don't actually build all the libraries. In
// particular, we don't build any libraries that are listed on a
// metalib. Is this one such a library?
#define build_it $[eq $[module $[TARGET],$[TARGET]],]
// We might need to define a BUILDING_ symbol for win32. We use the // We might need to define a BUILDING_ symbol for win32. We use the
// BUILDING_DLL variable name, defined typically in the metalib, for // BUILDING_DLL variable name, defined typically in the metalib, for
@ -361,17 +354,21 @@ igate : $[get_igatedb(metalib_target lib_target ss_lib_target)]
#define igatemscan $[get_igatemscan] #define igatemscan $[get_igatemscan]
#define igatemout $[get_igatemout] #define igatemout $[get_igatemout]
#if $[build_it] #if $[build_lib]
// Now output the rule to actually link the library from all of its // Now output the rule to actually link the library from all of its
// various .obj files. // various .obj files.
#define sources \ #define sources \
$[patsubst %,$[%_obj],$[compile_sources]] \ $[patsubst %,$[%_obj],$[compile_sources]]
#if $[not $[BUILD_COMPONENTS]]
// Also link in all of the component files directly into the metalib.
#define sources $[sources] \
$[components $[patsubst %,$[RELDIR]/$[%_obj],$[compile_sources]],$[active_component_libs]] $[components $[patsubst %,$[RELDIR]/$[%_obj],$[compile_sources]],$[active_component_libs]]
#endif
#define varname $[subst -,_,lib$[TARGET]_so] #define varname $[subst -,_,.,_,lib$[TARGET]$[lib_ext]]
$[varname] = $[sources] $[varname] = $[sources]
#define target $[ODIR]/$[get_dllname $[TARGET]].$[dlllib] #define target $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#define sources $($[varname]) #define sources $($[varname])
#define flags $[get_cflags] $[C++FLAGS] $[CFLAGS_OPT$[OPTIMIZE]] $[CFLAGS_SHARED] $[building_var:%=/D%] #define flags $[get_cflags] $[C++FLAGS] $[CFLAGS_OPT$[OPTIMIZE]] $[CFLAGS_SHARED] $[building_var:%=/D%]
#define mybasename $[basename $[notdir $[target]]] #define mybasename $[basename $[notdir $[target]]]
@ -387,25 +384,27 @@ $[TAB] mkdir -p $[tmpdirname_cyg] // this dir-creation-stuff is leftover from
$[TAB] cl /nologo /EP "$[dtool_ver_dir]\verdate.cpp" > "$[tmpdirname_win]\verdate.h" $[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" $[TAB] rc /n /I"$[tmpdirname_win]" $[DECYGWINED_INC_PATHLIST_ARGS] /fo$[VER_RESOURCE] $[filter /D%, $[flags]] "$[dtool_ver_dir]\version.rc"
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]] #if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[shared_lib_c++] $[TAB] $[link_lib_c++]
#else #else
$[TAB] $[shared_lib_c] $[TAB] $[link_lib_c]
#endif #endif
#else #else
#define VER_RESOURCE #define VER_RESOURCE
.NOTPARALLEL $[target] : $[sources] $[DLLBASEADDRFILENAME:%=$[dtool_ver_dir_cyg]/%] .NOTPARALLEL $[target] : $[sources] $[DLLBASEADDRFILENAME:%=$[dtool_ver_dir_cyg]/%]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]] #if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[shared_lib_c++] $[TAB] $[link_lib_c++]
#else #else
$[TAB] $[shared_lib_c] $[TAB] $[link_lib_c]
#endif #endif
#endif #endif
#if $[build_dlls] // Additional dependency rules for the implicit files that get built
$[ODIR]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib] // along with a .dll.
#if $[not $[lib_is_static]]
$[ODIR]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#endif #endif
#if $[build_pdbs] #if $[has_pdb]
$[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib] $[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#endif #endif
#endif #endif
@ -413,10 +412,10 @@ $[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib
// Here are the rules to install and uninstall the library and // Here are the rules to install and uninstall the library and
// everything that goes along with it. // everything that goes along with it.
#define installed_files \ #define installed_files \
$[if $[build_it], \ $[if $[build_lib], \
$[if $[build_dlls],$[install_lib_dir]/$[get_dllname $[TARGET]].$[dlllib]] \ $[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext] \
$[install_lib_dir]/$[get_dllname $[TARGET]].lib \ $[if $[not $[lib_is_static]],$[install_lib_dir]/$[get_dllname $[TARGET]].lib] \
$[if $[and $[build_dlls],$[build_pdbs]],$[install_lib_dir]/$[get_dllname $[TARGET]].pdb] \ $[if $[has_pdb],$[install_lib_dir]/$[get_dllname $[TARGET]].pdb] \
] \ ] \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \ $[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
$[INSTALL_HEADERS:%=$[install_headers_dir]/%] \ $[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
@ -431,9 +430,8 @@ uninstall-lib$[TARGET] :
$[TAB] rm -f $[sort $[installed_files]] $[TAB] rm -f $[sort $[installed_files]]
#endif #endif
#if $[build_dlls] $[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext] : $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
$[install_lib_dir]/$[get_dllname $[TARGET]].$[dlllib] : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib] #define local $[get_dllname $[TARGET]]$[lib_ext]
#define local $[get_dllname $[TARGET]].$[dlllib]
#define dest $[install_lib_dir] #define dest $[install_lib_dir]
#if $[eq $[USE_COMPILER], MSVC8] #if $[eq $[USE_COMPILER], MSVC8]
$[TAB] mt -manifest $[ODIR]/$[local].manifest -outputresource:$[ODIR]/$[local]\;2 $[TAB] mt -manifest $[ODIR]/$[local].manifest -outputresource:$[ODIR]/$[local]\;2
@ -441,16 +439,16 @@ $[TAB] cp $[install_dash_p] -f $[ODIR]/$[local].manifest $[dest]
#endif #endif
$[TAB] cp $[install_dash_p] -f $[ODIR]/$[local] $[dest]/ $[TAB] cp $[install_dash_p] -f $[ODIR]/$[local] $[dest]/
#endif // Install the .lib associated with a .dll.
#if $[not $[lib_is_static]]
$[install_lib_dir]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]].lib $[install_lib_dir]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]].lib
#define local $[get_dllname $[TARGET]].lib #define local $[get_dllname $[TARGET]].lib
#define dest $[install_lib_dir] #define dest $[install_lib_dir]
$[TAB] cp $[install_dash_p] -f $[ODIR]/$[local] $[dest]/ $[TAB] cp $[install_dash_p] -f $[ODIR]/$[local] $[dest]/
#endif
#if $[and $[build_dlls],$[build_pdbs]] #if $[has_pdb]
$[install_lib_dir]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]].pdb $[install_lib_dir]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]].pdb
#define local $[get_dllname $[TARGET]].pdb #define local $[get_dllname $[TARGET]].pdb
#define dest $[install_lib_dir] #define dest $[install_lib_dir]
@ -503,7 +501,7 @@ $[TAB] $[INTERROGATE_MODULE] -oc $[target] -module "$[igatemod]" -library "$[iga
#endif // igatemout #endif // igatemout
#end metalib_target lib_target #end metalib_target lib_target static_lib_target dynamic_lib_target
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
@ -515,23 +513,21 @@ $[TAB] $[INTERROGATE_MODULE] -oc $[target] -module "$[igatemod]" -library "$[iga
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
#forscopes noinst_lib_target test_lib_target #forscopes noinst_lib_target test_lib_target
#define varname $[subst -,_,lib$[TARGET]_so] #define varname $[subst -,_,.,_,lib$[TARGET]$[lib_ext]]
$[varname] = $[patsubst %,$[%_obj],$[compile_sources]] $[varname] = $[patsubst %,$[%_obj],$[compile_sources]]
#define target $[ODIR]/$[get_dllname $[TARGET]].$[dlllib] #define target $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#define sources $($[varname]) #define sources $($[varname])
#define $[VER_RESOURCE] $[COMPILED_RESOURCES] #define $[VER_RESOURCE] $[COMPILED_RESOURCES]
$[target] : $[sources] $[static_lib_dependencies] $[GENERATED_SOURCES] $[target] : $[sources] $[static_lib_dependencies] $[GENERATED_SOURCES]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]] #if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[shared_lib_c++] $[TAB] $[link_lib_c++]
#else #else
$[TAB] $[shared_lib_c] $[TAB] $[link_lib_c]
#endif #endif
#if $[build_dlls] $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext] : $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
$[ODIR]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib] #if $[has_pdb]
#endif $[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#if $[build_pdbs]
$[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
#endif #endif
// this section is all very clunky and not generalized enough // this section is all very clunky and not generalized enough
@ -591,47 +587,6 @@ $[TAB] $[MIDL_COMMAND]
#end noinst_lib_target test_lib_target #end noinst_lib_target test_lib_target
/////////////////////////////////////////////////////////////////////
// Now the static libraries. Again, we assume there's no interrogate
// interfaces going on in here, and there's no question of this being
// a metalib, making the rules relatively simple.
/////////////////////////////////////////////////////////////////////
#forscopes static_lib_target ss_lib_target
#define varname $[subst -,_,lib$[TARGET]_a]
$[varname] = $[patsubst %,$[%_obj],$[compile_sources]]
#define target $[ODIR]/$[get_dllname $[TARGET]].lib
#define sources $($[varname])
$[target] : $[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]/$[get_dllname $[TARGET]].lib \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
$[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
$[INSTALL_DATA:%=$[install_data_dir]/%] \
$[INSTALL_CONFIG:%=$[install_config_dir]/%]
install-lib$[TARGET] : $[installed_files]
uninstall-lib$[TARGET] :
#if $[installed_files]
$[TAB] rm -f $[sort $[installed_files]]
#endif
$[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 $[install_dash_p] -f $[ODIR]/$[local] $[dest]/
#end static_lib_target ss_lib_target
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
// The sed_bin_targets are a special bunch. These are scripts that // The sed_bin_targets are a special bunch. These are scripts that
// are to be preprocessed with sed before being installed, for // are to be preprocessed with sed before being installed, for
@ -820,7 +775,7 @@ $[TAB] cp $[target_prebuilt] $[target]
// file. // file.
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
#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 #forscopes metalib_target lib_target noinst_lib_target static_lib_target dynamic_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 // need to use #print to avoid printing to Makefile
// printvar prints the unevaluated defn of the var // printvar prints the unevaluated defn of the var
// #print TARGET=$[TARGET] // #print TARGET=$[TARGET]
@ -906,7 +861,7 @@ $[TAB] $[COMPILE_C++]
#end file #end file
#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 #end metalib_target lib_target noinst_lib_target static_lib_target dynamic_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 // And now the rules to install the auxiliary files, like headers and
// data files. // data files.

View File

@ -160,7 +160,7 @@
// $[complete_lpath] is rather like $[complete_ipath]: the list of // $[complete_lpath] is rather like $[complete_ipath]: the list of
// directories (from within this tree) we should add to our -L list. // directories (from within this tree) we should add to our -L list.
#defer complete_lpath $[static_libs $[RELDIR:%=%\$[ODIR]],$[actual_local_libs]] $[dynamic_libs $[RELDIR:%=%\$[ODIR]],$[actual_local_libs]] $[EXTRA_LPATH] #defer complete_lpath $[libs $[RELDIR:%=%\$[ODIR]],$[actual_local_libs]] $[EXTRA_LPATH]
// $[lpath] is like $[target_ipath]: it's the list of directories we // $[lpath] is like $[target_ipath]: it's the list of directories we
// should add to our -L list, from the context of a particular target. // should add to our -L list, from the context of a particular target.

View File

@ -63,7 +63,7 @@
#if $[eq $[module $[TARGET],$[TARGET]],] #if $[eq $[module $[TARGET],$[TARGET]],]
// This library is not on a metalib, so we can build it. // This library is not on a metalib, so we can build it.
#set real_lib_targets $[real_lib_targets] $[TARGET] #set real_lib_targets $[real_lib_targets] $[TARGET]
#set real_lib_target_libs $[real_lib_target_libs] $[ODIR]/$[get_dllname $[TARGET]].$[dlllib] #set real_lib_target_libs $[real_lib_target_libs] $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#else #else
// This library is on a metalib, so we can't build it, but we // This library is on a metalib, so we can't build it, but we
// should build all the obj's that go into it. // should build all the obj's that go into it.
@ -73,20 +73,19 @@
#end lib_target #end lib_target
// We need to know the various targets we'll be building. // We need to know the various targets we'll be building.
// $[lib_targets] will be the list of dynamic libraries, // $[lib_targets] will be the list of dynamic and static libraries,
// $[static_lib_targets] the list of static libraries, and
// $[bin_targets] the list of binaries. $[test_bin_targets] is the // $[bin_targets] the list of binaries. $[test_bin_targets] is the
// list of binaries that are to be built only when specifically asked for. // list of binaries that are to be built only when specifically
// asked for.
#define lib_targets $[forscopes metalib_target noinst_lib_target test_lib_target,$[if $[build_target],$[ODIR]/$[get_dllname $[TARGET]].$[dlllib]]] $[real_lib_target_libs] #define lib_targets $[forscopes metalib_target noinst_lib_target test_lib_target static_lib_target dynamic_lib_target ss_lib_target,$[if $[build_target],$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]]] $[real_lib_target_libs]
#define static_lib_targets $[forscopes static_lib_target ss_lib_target,$[if $[build_target],$[ODIR]/$[get_dllname $[TARGET]].lib]]
#define bin_targets \ #define bin_targets \
$[active_target(bin_target noinst_bin_target):%=$[ODIR]/%.exe] \ $[active_target(bin_target noinst_bin_target):%=$[ODIR]/%.exe] \
$[active_target(sed_bin_target):%=$[ODIR]/%] $[active_target(sed_bin_target):%=$[ODIR]/%]
#define test_bin_targets $[active_target(test_bin_target):%=$[ODIR]/%.exe] #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]] #defer test_lib_targets $[active_target(test_lib_target):%=$[if $[TEST_ODIR],$[TEST_ODIR],$[ODIR]]/%$[lib_ext]]
// And these variables will define the various things we need to // And these variables will define the various things we need to
// install. // install.
@ -133,7 +132,7 @@
// with that happen to be static libs. We will introduce dependency // with that happen to be static libs. We will introduce dependency
// rules for these. (We don't need dependency rules for dynamic libs, // rules for these. (We don't need dependency rules for dynamic libs,
// since these don't get burned in at build time.) // since these don't get burned in at build time.)
#defer static_lib_dependencies $[all_libs $[if $[lib_is_static],$[RELDIR:%=%/$[ODIR]/lib$[TARGET]$[dllext].lib]],$[complete_local_libs]] #defer static_lib_dependencies $[all_libs $[if $[lib_is_static],$[RELDIR:%=%/$[ODIR]/lib$[TARGET]$[dllext]$[lib_ext]]],$[complete_local_libs]]
// And $[complete_ipath] is the list of directories (from within this // And $[complete_ipath] is the list of directories (from within this
// tree) we should add to our -I list. It's basically just one for // tree) we should add to our -I list. It's basically just one for
@ -155,7 +154,7 @@
// $[complete_lpath] is rather like $[complete_ipath]: the list of // $[complete_lpath] is rather like $[complete_ipath]: the list of
// directories (from within this tree) we should add to our -L list. // directories (from within this tree) we should add to our -L list.
#defer complete_lpath $[static_libs $[RELDIR:%=%/$[ODIR]],$[actual_local_libs]] $[dynamic_libs $[RELDIR:%=%/$[ODIR]],$[actual_local_libs]] #defer complete_lpath $[libs $[RELDIR:%=%/$[ODIR]],$[actual_local_libs]] $[EXTRA_LPATH]
// $[lpath] is like $[target_ipath]: it's the list of directories we // $[lpath] is like $[target_ipath]: it's the list of directories we
// should add to our -L list, from the context of a particular target. // should add to our -L list, from the context of a particular target.
@ -391,7 +390,7 @@ igate : $[patsubst %,$[osfilename %],$[get_igatedb(metalib_target lib_target ss_
#define varname $[subst -,_,lib$[TARGET]_so] #define varname $[subst -,_,lib$[TARGET]_so]
$[varname] = $[patsubst %,$[osfilename %],$[sources]] $[varname] = $[patsubst %,$[osfilename %],$[sources]]
#define target $[ODIR]/$[get_dllname $[TARGET]].$[dlllib] #define target $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#define sources $($[varname]) #define sources $($[varname])
#define flags $[get_cflags] $[C++FLAGS] $[CFLAGS_OPT$[OPTIMIZE]] $[CFLAGS_SHARED] $[building_var:%=/D%] #define flags $[get_cflags] $[C++FLAGS] $[CFLAGS_OPT$[OPTIMIZE]] $[CFLAGS_SHARED] $[building_var:%=/D%]
#define mybasename $[basename $[notdir $[target]]] #define mybasename $[basename $[notdir $[target]]]
@ -407,16 +406,16 @@ $[TAB] if not exist $[osfilename $[tmpdirname_cyg]] mkdir $[osfilename $[tmpdir
$[TAB] cl /nologo /EP "$[dtool_ver_dir]\verdate.cpp" > "$[tmpdirname_win]\verdate.h" $[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" $[TAB] rc /n /I"$[tmpdirname_win]" $[DECYGWINED_INC_PATHLIST_ARGS] /fo$[VER_RESOURCE] $[filter /D%, $[flags]] "$[dtool_ver_dir]\version.rc"
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]] #if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[SHARED_LIB_C++] $[VER_RESOURCE] $[TAB] $[link_lib_c++] $[VER_RESOURCE]
#else #else
$[TAB] $[SHARED_LIB_C] $[VER_RESOURCE] $[TAB] $[link_lib_c] $[VER_RESOURCE]
#endif #endif
#else #else
$[osfilename $[target]] : $[patsubst %,$[osfilename %],$[sources] $[DLLBASEADDRFILENAME:%=$[dtool_ver_dir_cyg]/%]] $[osfilename $[target]] : $[patsubst %,$[osfilename %],$[sources] $[DLLBASEADDRFILENAME:%=$[dtool_ver_dir_cyg]/%]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]] #if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[SHARED_LIB_C++] $[TAB] $[link_lib_c++]
#else #else
$[TAB] $[SHARED_LIB_C] $[TAB] $[link_lib_c]
#endif #endif
#endif #endif
#if $[eq $[USE_COMPILER], MSVC8] #if $[eq $[USE_COMPILER], MSVC8]
@ -424,10 +423,10 @@ $[TAB] mt -nologo -manifest $[target].manifest -outputresource:$[target];2
#endif #endif
#if $[build_dlls] #if $[build_dlls]
$[osfilename $[ODIR]/$[get_dllname $[TARGET]].lib] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]].$[dlllib]] $[osfilename $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]]
#endif #endif
#if $[build_pdbs] #if $[build_pdbs]
$[osfilename $[ODIR]/$[get_dllname $[TARGET]].pdb] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]].$[dlllib]] $[osfilename $[ODIR]/$[get_dllname $[TARGET]].pdb] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]]
#endif #endif
#endif #endif
@ -436,8 +435,8 @@ $[osfilename $[ODIR]/$[get_dllname $[TARGET]].pdb] : $[patsubst %,$[osfilename %
// everything that goes along with it. // everything that goes along with it.
#define installed_files \ #define installed_files \
$[if $[build_it], \ $[if $[build_it], \
$[if $[build_dlls],$[install_lib_dir]/$[get_dllname $[TARGET]].$[dlllib]] \ $[if $[build_dlls],$[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext]] \
$[install_lib_dir]/$[get_dllname $[TARGET]].lib \ $[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext] \
$[if $[and $[build_dlls],$[build_pdbs]],$[install_lib_dir]/$[get_dllname $[TARGET]].pdb] \ $[if $[and $[build_dlls],$[build_pdbs]],$[install_lib_dir]/$[get_dllname $[TARGET]].pdb] \
] \ ] \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \ $[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
@ -456,8 +455,8 @@ $[TAB] if exist $[file] del /f $[file]
#endif #endif
#if $[build_dlls] #if $[build_dlls]
$[osfilename $[install_lib_dir]/$[get_dllname $[TARGET]].$[dlllib]] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]].$[dlllib]] $[osfilename $[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext]] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]]
#define local $[get_dllname $[TARGET]].$[dlllib] #define local $[get_dllname $[TARGET]]$[lib_ext]
#define dest $[install_lib_dir] #define dest $[install_lib_dir]
#if $[eq $[USE_COMPILER], MSVC8] #if $[eq $[USE_COMPILER], MSVC8]
$[TAB] mt -nologo -manifest $[ODIR]/$[local].manifest -outputresource:$[ODIR]/$[local];2 $[TAB] mt -nologo -manifest $[ODIR]/$[local].manifest -outputresource:$[ODIR]/$[local];2
@ -466,8 +465,8 @@ $[TAB] xcopy /I/Y $[osfilename $[ODIR]/$[local]] $[osfilename $[dest]]
$[TAB] xcopy /I/Y $[osfilename $[ODIR]/$[local].manifest] $[osfilename $[dest]] $[TAB] xcopy /I/Y $[osfilename $[ODIR]/$[local].manifest] $[osfilename $[dest]]
#endif #endif
$[osfilename $[install_lib_dir]/$[get_dllname $[TARGET]].lib] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]].lib] $[osfilename $[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext]] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]]
#define local $[get_dllname $[TARGET]].lib #define local $[get_dllname $[TARGET]]$[lib_ext]
#define dest $[install_lib_dir] #define dest $[install_lib_dir]
$[TAB] xcopy /I/Y $[osfilename $[ODIR]/$[local]] $[osfilename $[dest]] $[TAB] xcopy /I/Y $[osfilename $[ODIR]/$[local]] $[osfilename $[dest]]
@ -546,23 +545,23 @@ $[TAB] $[INTERROGATE_MODULE] -oc $[target] -module "$[igatemod]" -library "$[iga
#forscopes noinst_lib_target test_lib_target #forscopes noinst_lib_target test_lib_target
#define varname $[subst -,_,lib$[TARGET]_so] #define varname $[subst -,_,lib$[TARGET]_so]
$[varname] = $[patsubst %,$[osfilename $[%_obj]],$[compile_sources]] $[varname] = $[patsubst %,$[osfilename $[%_obj]],$[compile_sources]]
#define target $[ODIR]/$[get_dllname $[TARGET]].$[dlllib] #define target $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#define sources $($[varname]) #define sources $($[varname])
$[osfilename $[target]] : $[patsubst %,$[osfilename %],$[sources] $[static_lib_dependencies] $[GENERATED_SOURCES]] $[osfilename $[target]] : $[patsubst %,$[osfilename %],$[sources] $[static_lib_dependencies] $[GENERATED_SOURCES]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]] #if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[SHARED_LIB_C++] $[COMPILED_RESOURCES] $[TAB] $[link_lib_c++] $[COMPILED_RESOURCES]
#else #else
$[TAB] $[SHARED_LIB_C] $[COMPILED_RESOURCES] $[TAB] $[link_lib_c] $[COMPILED_RESOURCES]
#endif #endif
#if $[eq $[USE_COMPILER], MSVC8] #if $[eq $[USE_COMPILER], MSVC8]
$[TAB] mt -nologo -manifest $[target].manifest -outputresource:$[target];2 $[TAB] mt -nologo -manifest $[target].manifest -outputresource:$[target];2
#endif #endif
#if $[build_dlls] #if $[build_dlls]
$[osfilename $[ODIR]/$[get_dllname $[TARGET]].lib] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]].$[dlllib]] $[osfilename $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]]
#endif #endif
#if $[build_pdbs] #if $[build_pdbs]
$[osfilename $[ODIR]/$[get_dllname $[TARGET]].pdb] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]].$[dlllib]] $[osfilename $[ODIR]/$[get_dllname $[TARGET]].pdb] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]]
#endif #endif
// this section is all very clunky and not generalized enough // this section is all very clunky and not generalized enough
@ -622,46 +621,46 @@ $[TAB] $[MIDL_COMMAND]
#end noinst_lib_target test_lib_target #end noinst_lib_target test_lib_target
///////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////
// Now the static libraries. Again, we assume there's no interrogate // // Now the static libraries. Again, we assume there's no interrogate
// interfaces going on in here, and there's no question of this being // // interfaces going on in here, and there's no question of this being
// a metalib, making the rules relatively simple. // // a metalib, making the rules relatively simple.
///////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////
#forscopes static_lib_target ss_lib_target // #forscopes static_lib_target ss_lib_target
#define varname $[subst -,_,lib$[TARGET]_a] // #define varname $[subst -,_,lib$[TARGET]_a]
$[varname] = $[patsubst %,$[osfilename $[%_obj]],$[compile_sources]] // $[varname] = $[patsubst %,$[osfilename $[%_obj]],$[compile_sources]]
#define target $[ODIR]/$[get_dllname $[TARGET]].lib // #define target $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#define sources $($[varname]) // #define sources $($[varname])
$[osfilename $[target]] : $[patsubst %,$[osfilename %],$[sources]] // $[osfilename $[target]] : $[patsubst %,$[osfilename %],$[sources]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]] // #if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[STATIC_LIB_C++] // $[TAB] $[STATIC_LIB_C++]
#else // #else
$[TAB] $[STATIC_LIB_C] // $[TAB] $[STATIC_LIB_C]
#endif // #endif
#define installed_files \ // #define installed_files \
$[install_lib_dir]/$[get_dllname $[TARGET]].lib \ // $[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext] \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \ // $[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
$[INSTALL_HEADERS:%=$[install_headers_dir]/%] \ // $[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
$[INSTALL_DATA:%=$[install_data_dir]/%] \ // $[INSTALL_DATA:%=$[install_data_dir]/%] \
$[INSTALL_CONFIG:%=$[install_config_dir]/%] // $[INSTALL_CONFIG:%=$[install_config_dir]/%]
install-lib$[TARGET] : $[patsubst %,$[osfilename %],$[installed_files]] // install-lib$[TARGET] : $[patsubst %,$[osfilename %],$[installed_files]]
uninstall-lib$[TARGET] : // uninstall-lib$[TARGET] :
#if $[installed_files] // #if $[installed_files]
#foreach file $[patsubst %,$[osfilename %],$[sort $[installed_files]]] // #foreach file $[patsubst %,$[osfilename %],$[sort $[installed_files]]]
$[TAB] if exist $[file] del /f $[file] // $[TAB] if exist $[file] del /f $[file]
#end file // #end file
#endif // #endif
$[osfilename $[install_lib_dir]/$[get_dllname $[TARGET]].lib] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]].lib] // $[osfilename $[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext]] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]]
#define local $[get_dllname $[TARGET]].lib // #define local $[get_dllname $[TARGET]]$[lib_ext]
#define dest $[install_lib_dir] // #define dest $[install_lib_dir]
$[TAB] xcopy /I/Y $[osfilename $[ODIR]/$[local]] $[osfilename $[dest]] // $[TAB] xcopy /I/Y $[osfilename $[ODIR]/$[local]] $[osfilename $[dest]]
#end static_lib_target ss_lib_target // #end static_lib_target ss_lib_target

View File

@ -35,18 +35,16 @@
#if $[build_directory] #if $[build_directory]
// We need to know the various targets we'll be building. // We need to know the various targets we'll be building.
// $[lib_targets] will be the list of dynamic libraries, // $[lib_targets] will be the list of dynamic and static libraries,
// $[static_lib_targets] the list of static libraries, and // and $[bin_targets] the list of binaries. $[test_bin_targets] is
// $[bin_targets] the list of binaries. $[test_bin_targets] is the // the list of binaries that are to be built only when specifically
// list of binaries that are to be built only when specifically asked // asked for.
// for. #define lib_targets $[active_target_libext(metalib_target lib_target static_lib_target dynamic_lib_target ss_lib_target noinst_lib_target):%=$[ODIR]/lib%]
#define lib_targets $[active_target(metalib_target lib_target ss_lib_target noinst_lib_target):%=$[ODIR]/lib%$[dynamic_lib_ext]]
#define bundle_targets #define bundle_targets
#if $[bundle_ext] #if $[bundle_ext]
#define bundle_targets $[active_target(metalib_target):%=$[ODIR]/lib%$[bundle_ext]] #define bundle_targets $[active_target(metalib_target):%=$[ODIR]/lib%$[bundle_ext]]
#endif #endif
#define static_lib_targets $[active_target(static_lib_target):%=$[ODIR]/lib%.a]
#define bin_targets $[active_target(bin_target noinst_bin_target sed_bin_target):%=$[ODIR]/%] #define bin_targets $[active_target(bin_target noinst_bin_target sed_bin_target):%=$[ODIR]/%]
#define test_bin_targets $[active_target(test_bin_target):%=$[ODIR]/%] #define test_bin_targets $[active_target(test_bin_target):%=$[ODIR]/%]
@ -57,16 +55,16 @@
#define install_scripts $[sort $[INSTALL_SCRIPTS(metalib_target lib_target ss_lib_target static_lib_target bin_target)] $[INSTALL_SCRIPTS]] #define install_scripts $[sort $[INSTALL_SCRIPTS(metalib_target lib_target ss_lib_target static_lib_target bin_target)] $[INSTALL_SCRIPTS]]
#define install_headers $[sort $[INSTALL_HEADERS(metalib_target lib_target ss_lib_target static_lib_target bin_target)] $[INSTALL_HEADERS]] #define install_headers $[sort $[INSTALL_HEADERS(metalib_target lib_target ss_lib_target static_lib_target bin_target)] $[INSTALL_HEADERS]]
#define install_parser_inc $[sort $[INSTALL_PARSER_INC]] #define install_parser_inc $[sort $[INSTALL_PARSER_INC]]
#define install_data $[sort $[INSTALL_DATA(metalib_target lib_target ss_lib_target static_lib_target bin_target)] $[INSTALL_DATA]] #define install_data $[sort $[INSTALL_DATA(metalib_target lib_target ss_lib_target static_lib_target dynamic_lib_target bin_target)] $[INSTALL_DATA]]
#define install_config $[sort $[INSTALL_CONFIG(metalib_target lib_target ss_lib_target static_lib_target bin_target)] $[INSTALL_CONFIG]] #define install_config $[sort $[INSTALL_CONFIG(metalib_target lib_target ss_lib_target static_lib_target dynamic_lib_target bin_target)] $[INSTALL_CONFIG]]
#define install_igatedb $[sort $[get_igatedb(metalib_target lib_target ss_lib_target)]] #define install_igatedb $[sort $[get_igatedb(metalib_target lib_target ss_lib_target)]]
// These are the various sources collected from all targets within the // These are the various sources collected from all targets within the
// directory. // 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 st_sources $[sort $[compile_sources(metalib_target lib_target noinst_lib_target static_lib_target dynamic_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 yxx_st_sources $[sort $[yxx_sources(metalib_target lib_target noinst_lib_target static_lib_target dynamic_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 lxx_st_sources $[sort $[lxx_sources(metalib_target lib_target noinst_lib_target static_lib_target dynamic_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 dep_sources_1 $[sort $[get_sources(metalib_target lib_target noinst_lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target)]]
// These are the source files that our dependency cache file will // 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 // depend on. If it's an empty list, we won't bother writing rules to
@ -89,7 +87,7 @@
// with that happen to be static libs. We will introduce dependency // with that happen to be static libs. We will introduce dependency
// rules for these. (We don't need dependency rules for dynamic libs, // rules for these. (We don't need dependency rules for dynamic libs,
// since these don't get burned in at build time.) // since these don't get burned in at build time.)
#defer static_lib_dependencies $[all_libs $[if $[lib_is_static],$[RELDIR:%=%/$[ODIR]/lib$[TARGET]$[dllext].a]],$[complete_local_libs]] #defer static_lib_dependencies $[all_libs $[if $[lib_is_static],$[RELDIR:%=%/$[ODIR]/lib$[TARGET]$[dllext]$[lib_ext]]],$[complete_local_libs]]
// $[target_ipath] is the proper ipath to put on the command line, // $[target_ipath] is the proper ipath to put on the command line,
// from the context of a particular target. // from the context of a particular target.
@ -103,7 +101,7 @@
// $[complete_lpath] is rather like $[complete_ipath]: the list of // $[complete_lpath] is rather like $[complete_ipath]: the list of
// directories (from within this tree) we should add to our -L list. // directories (from within this tree) we should add to our -L list.
#defer complete_lpath $[static_libs $[RELDIR:%=%/$[ODIR]],$[actual_local_libs]] $[dynamic_libs $[RELDIR:%=%/$[ODIR]],$[actual_local_libs]] $[EXTRA_LPATH] #defer complete_lpath $[libs $[RELDIR:%=%/$[ODIR]],$[actual_local_libs]] $[EXTRA_LPATH]
// $[lpath] is like $[target_ipath]: it's the list of directories we // $[lpath] is like $[target_ipath]: it's the list of directories we
// should add to our -L list, from the context of a particular target. // should add to our -L list, from the context of a particular target.
@ -200,20 +198,20 @@ include $[TAU_MAKEFILE]
#define all_targets \ #define all_targets \
Makefile \ Makefile \
$[if $[dep_sources],$[DEPENDENCY_CACHE_FILENAME]] \ $[if $[dep_sources],$[DEPENDENCY_CACHE_FILENAME]] \
$[sort $[lib_targets] $[bundle_targets] $[static_lib_targets] $[bin_targets]] $[sort $[lib_targets] $[bundle_targets] $[bin_targets]]
all : $[all_targets] all : $[all_targets]
// The 'test' rule makes all the test_bin_targets. // The 'test' rule makes all the test_bin_targets.
test : $[test_bin_targets] test : $[test_bin_targets]
clean : clean-igate clean : clean-igate
#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 #forscopes metalib_target lib_target noinst_lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target
#if $[compile_sources] #if $[compile_sources]
$[TAB] rm -f $[patsubst %,$[%_obj],$[compile_sources]] $[TAB] rm -f $[patsubst %,$[%_obj],$[compile_sources]]
#endif #endif
#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 #end metalib_target lib_target noinst_lib_target static_lib_target dynamic_lib_target ss_lib_target bin_target noinst_bin_target test_bin_target test_lib_target
#if $[lib_targets] $[bundle_targets] $[static_lib_targets] $[bin_targets] $[test_bin_targets] #if $[lib_targets] $[bundle_targets] $[bin_targets] $[test_bin_targets]
$[TAB] rm -f $[lib_targets] $[bundle_targets] $[static_lib_targets] $[bin_targets] $[test_bin_targets] $[TAB] rm -f $[lib_targets] $[bundle_targets] $[bin_targets] $[test_bin_targets]
#endif #endif
#if $[yxx_st_sources] $[lxx_st_sources] #if $[yxx_st_sources] $[lxx_st_sources]
$[TAB] rm -f $[patsubst %.yxx,%.cxx %.h,$[yxx_st_sources]] $[patsubst %.lxx,%.cxx,$[lxx_st_sources]] $[TAB] rm -f $[patsubst %.yxx,%.cxx %.h,$[yxx_st_sources]] $[patsubst %.lxx,%.cxx,$[lxx_st_sources]]
@ -239,7 +237,7 @@ $[TAB] rm -f $[composite_list]
#endif #endif
clean-igate : clean-igate :
#forscopes metalib_target lib_target ss_lib_target #forscopes metalib_target lib_target ss_lib_target dynamic_lib_target
#define igatedb $[get_igatedb] #define igatedb $[get_igatedb]
#define igateoutput $[get_igateoutput] #define igateoutput $[get_igateoutput]
#define igatemscan $[get_igatemscan] #define igatemscan $[get_igatemscan]
@ -253,7 +251,7 @@ $[TAB] rm -f $[igateoutput] $[$[igateoutput]_obj]
#if $[igatemout] #if $[igatemout]
$[TAB] rm -f $[igatemout] $[$[igatemout]_obj] $[TAB] rm -f $[igatemout] $[$[igatemout]_obj]
#endif #endif
#end metalib_target lib_target ss_lib_target #end metalib_target lib_target ss_lib_target dynamic_lib_target
// Now, 'install' and 'uninstall'. These simply copy files into the // Now, 'install' and 'uninstall'. These simply copy files into the
// install directory (or remove them). The 'install' rule also makes // install directory (or remove them). The 'install' rule also makes
@ -270,7 +268,7 @@ $[TAB] rm -f $[igatemout] $[$[igatemout]_obj]
$[get_igatedb(metalib_target lib_target ss_lib_target):$[ODIR]/%=$[install_igatedb_dir]/%] $[get_igatedb(metalib_target lib_target ss_lib_target):$[ODIR]/%=$[install_igatedb_dir]/%]
#define install_targets \ #define install_targets \
$[active_target(metalib_target lib_target static_lib_target ss_lib_target):%=install-lib%] \ $[active_target(metalib_target lib_target static_lib_target dynamic_lib_target ss_lib_target):%=install-lib%] \
$[active_target(bin_target sed_bin_target):%=install-%] \ $[active_target(bin_target sed_bin_target):%=install-%] \
$[installed_files] $[installed_files]
@ -278,7 +276,7 @@ install : all $[install_targets]
install-igate : $[sort $[installed_igate_files]] install-igate : $[sort $[installed_igate_files]]
uninstall : $[active_target(metalib_target lib_target static_lib_target ss_lib_target):%=uninstall-lib%] $[active_target(bin_target):%=uninstall-%] uninstall : $[active_target(metalib_target lib_target static_lib_target dynamic_lib_target ss_lib_target):%=uninstall-lib%] $[active_target(bin_target):%=uninstall-%]
#if $[installed_files] #if $[installed_files]
$[TAB] rm -f $[sort $[installed_files]] $[TAB] rm -f $[sort $[installed_files]]
#endif #endif
@ -303,11 +301,10 @@ igate : $[get_igatedb(metalib_target lib_target ss_lib_target)]
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
// First, the dynamic libraries. Each lib_target and metalib_target // First, the normally installed dynamic and static libraries.
// is a dynamic library.
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
#forscopes metalib_target lib_target ss_lib_target #forscopes metalib_target lib_target ss_lib_target static_lib_target dynamic_lib_target
// In Unix, we always build all the libraries, unlike Windows. // In Unix, we always build all the libraries, unlike Windows.
#define build_it 1 #define build_it 1
@ -350,22 +347,22 @@ igate : $[get_igatedb(metalib_target lib_target ss_lib_target)]
#define cc_ld $[or $[get_ld],$[CC]] #define cc_ld $[or $[get_ld],$[CC]]
#define cxx_ld $[or $[get_ld],$[CXX]] #define cxx_ld $[or $[get_ld],$[CXX]]
#define varname $[subst -,_,lib$[TARGET]_so] #define varname $[subst -,_,.,_,lib$[TARGET]$[lib_ext]]
$[varname] = $[sources] $[if $[not $[bundle_ext]],$[interrogate_sources]] $[varname] = $[sources] $[if $[not $[bundle_ext]],$[interrogate_sources]]
#define target $[ODIR]/lib$[TARGET]$[dynamic_lib_ext] #define target $[ODIR]/lib$[TARGET]$[lib_ext]
#define sources $($[varname]) #define sources $($[varname])
$[target] : $[sources] $[static_lib_dependencies] $[target] : $[sources] $[static_lib_dependencies]
#if $[filter %.mm %.cxx %.yxx %.lxx,$[get_sources]] #if $[filter %.mm %.cxx %.yxx %.lxx,$[get_sources]]
$[TAB] $[shared_lib_c++] $[TAB] $[link_lib_c++]
#else #else
$[TAB] $[shared_lib_c] $[TAB] $[link_lib_c]
#endif #endif
#if $[bundle_ext] #if $[bundle_ext]
// Also generate the bundles (on OSX only). // Also generate the bundles (on OSX only).
#define target $[ODIR]/lib$[TARGET]$[bundle_ext] #define target $[ODIR]/lib$[TARGET]$[bundle_ext]
#define sources $[interrogate_sources] $[ODIR]/lib$[TARGET]$[dynamic_lib_ext] #define sources $[interrogate_sources] $[ODIR]/lib$[TARGET]$[lib_ext]
$[target] : $[sources] $[static_lib_dependencies] $[target] : $[sources] $[static_lib_dependencies]
$[TAB] $[BUNDLE_LIB_C++] $[TAB] $[BUNDLE_LIB_C++]
#endif // BUNDLE_EXT #endif // BUNDLE_EXT
@ -374,7 +371,7 @@ $[TAB] $[BUNDLE_LIB_C++]
// Here are the rules to install and uninstall the library and // Here are the rules to install and uninstall the library and
// everything that goes along with it. // everything that goes along with it.
#define installed_files \ #define installed_files \
$[install_lib_dir]/lib$[TARGET]$[dynamic_lib_ext] \ $[install_lib_dir]/lib$[TARGET]$[lib_ext] \
$[if $[bundle_ext],$[install_lib_dir]/lib$[TARGET]$[bundle_ext]] \ $[if $[bundle_ext],$[install_lib_dir]/lib$[TARGET]$[bundle_ext]] \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \ $[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
$[INSTALL_HEADERS:%=$[install_headers_dir]/%] \ $[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
@ -389,8 +386,8 @@ uninstall-lib$[TARGET] :
$[TAB] rm -f $[sort $[installed_files]] $[TAB] rm -f $[sort $[installed_files]]
#endif #endif
$[install_lib_dir]/lib$[TARGET]$[dynamic_lib_ext] : $[ODIR]/lib$[TARGET]$[dynamic_lib_ext] $[install_lib_dir]/lib$[TARGET]$[lib_ext] : $[ODIR]/lib$[TARGET]$[lib_ext]
#define local $[ODIR]/lib$[TARGET]$[dynamic_lib_ext] #define local $[ODIR]/lib$[TARGET]$[lib_ext]
#define dest $[install_lib_dir] #define dest $[install_lib_dir]
$[TAB] $[INSTALL] $[TAB] $[INSTALL]
@ -447,7 +444,7 @@ $[TAB] $[INTERROGATE_MODULE] -oc $[target] -module "$[igatemod]" -library "$[iga
#endif // igatemout #endif // igatemout
#end metalib_target lib_target ss_lib_target #end metalib_target lib_target ss_lib_target static_lib_target dynamic_lib_target
@ -463,60 +460,18 @@ $[TAB] $[INTERROGATE_MODULE] -oc $[target] -module "$[igatemod]" -library "$[iga
#forscopes noinst_lib_target #forscopes noinst_lib_target
#define varname $[subst -,_,lib$[TARGET]_so] #define varname $[subst -,_,lib$[TARGET]_so]
$[varname] = $[patsubst %,$[%_obj],$[compile_sources]] $[varname] = $[patsubst %,$[%_obj],$[compile_sources]]
#define target $[ODIR]/lib$[TARGET]$[dynamic_lib_ext] #define target $[ODIR]/lib$[TARGET]$[lib_ext]
#define sources $($[varname]) #define sources $($[varname])
$[target] : $[sources] $[static_lib_dependencies] $[target] : $[sources] $[static_lib_dependencies]
#if $[filter %.mm %.cxx %.yxx %.lxx,$[get_sources]] #if $[filter %.mm %.cxx %.yxx %.lxx,$[get_sources]]
$[TAB] $[shared_lib_c++] $[TAB] $[link_lib_c++]
#else #else
$[TAB] $[shared_lib_c] $[TAB] $[link_lib_c]
#endif #endif
#end noinst_lib_target #end noinst_lib_target
/////////////////////////////////////////////////////////////////////
// Now the static libraries. Again, we assume there's no interrogate
// interfaces going on in here, and there's no question of this being
// a metalib, making the rules relatively simple.
/////////////////////////////////////////////////////////////////////
#forscopes static_lib_target
#define varname $[subst -,_,lib$[TARGET]_a]
$[varname] = $[patsubst %,$[%_obj],$[compile_sources]]
#define target $[ODIR]/lib$[TARGET]$[dllext].a
#define sources $($[varname])
$[target] : $[sources]
#if $[filter %.mm %.cxx %.yxx %.lxx,$[get_sources]]
$[TAB] $[STATIC_LIB_C++]
#else
$[TAB] $[STATIC_LIB_C]
#endif
#define installed_files \
$[install_lib_dir]/lib$[TARGET]$[dllext].a \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
$[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
$[INSTALL_DATA:%=$[install_data_dir]/%] \
$[INSTALL_CONFIG:%=$[install_config_dir]/%]
install-lib$[TARGET] : $[installed_files]
uninstall-lib$[TARGET] :
#if $[installed_files]
$[TAB] rm -f $[sort $[installed_files]]
#endif
$[install_lib_dir]/lib$[TARGET]$[dllext].a : $[ODIR]/lib$[TARGET]$[dllext].a
#define local $[ODIR]/lib$[TARGET]$[dllext].a
#define dest $[install_lib_dir]
$[TAB] $[INSTALL]
#end static_lib_target
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
// The sed_bin_targets are a special bunch. These are scripts that // The sed_bin_targets are a special bunch. These are scripts that
// are to be preprocessed with sed before being installed, for // are to be preprocessed with sed before being installed, for