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):
#define DYNAMIC_LIB_EXT .dll
#define STATIC_LIB_EXT .lib
#define BUNDLE_EXT

View File

@ -923,6 +923,28 @@
// dynamic libraries.
//#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
// meaningful if LINK_ALL_STATIC is not defined, and we are building
// on Windows. Some Windows compilers may not support this syntax.

View File

@ -44,22 +44,21 @@
// $[compile_sources] from the different directories.
#define composite_list
// 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
#define lib_is_static 1
#end static_lib_target
#if $[WINDOWS_PLATFORM]
#forscopes ss_lib_target
#define lib_is_static 1
#end ss_lib_target
#endif
#if $[LINK_ALL_STATIC]
#forscopes ss_lib_target lib_target
#forscopes metalib_target ss_lib_target lib_target
#define lib_is_static 1
#end ss_lib_target lib_target
#end metalib_target ss_lib_target lib_target
#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
// deferred variables defined in Globals.pp. This way they won't need
// to get repeatedly reevaluated as each directory examines each
@ -163,7 +162,7 @@
#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
// Sources.pp.

View File

@ -55,17 +55,6 @@
#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
#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++ $[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
// $[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 */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
// be defined in a particular Sources.pp, e.g. in the "toplevel" file.
#map dir_type DIR_TYPE(*/)
// These allow us to determine whether a particular local library is a
// 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
#map libs TARGET(*/lib_target */static_lib_target */dynamic_lib_target */ss_lib_target */noinst_lib_target */test_lib_target */metalib_target)
// This lets us identify which metalib, if any, is including each
// 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 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 static_lib_c $[STATIC_LIB_C]
#defer static_lib_c++ $[STATIC_LIB_C++]
#else
#defer compile_c $[COMPILE_C]
@ -449,17 +437,29 @@
#defer link_bin_c++ $[LINK_BIN_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
#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 static_lib_ext $[STATIC_LIB_EXT]
#defer lib_ext $[if $[lib_is_static],$[static_lib_ext],$[dynamic_lib_ext]]
#defer bundle_ext $[BUNDLE_EXT]
#if $[LINK_ALL_STATIC]
#defer shared_lib_c $[STATIC_LIB_C]
#defer shared_lib_c++ $[STATIC_LIB_C++]
#defer dynamic_lib_ext $[STATIC_LIB_EXT]
#defer bundle_ext
#endif // LINK_ALL_STATIC
// If BUILD_COMPONENTS is not true, we don't actually build all the
// libraries. In particular, we don't build any libraries that are
// listed on a metalib. This variable can be evaluated within a
// library's scope to determine whether it should be built according
// to this rule.
#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
@ -493,6 +493,7 @@
// string if the target is not to be built, or the target name if it
// is.
#defer active_target $[if $[build_target],$[TARGET]]
#defer active_target_libext $[if $[build_target],$[TARGET]$[lib_ext]]
#defer get_combined_sources $[COMBINED_SOURCES]
// This subroutine will set up the sources variable to reflect the
@ -725,7 +726,7 @@
#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
#forscopes static_lib_target dynamic_lib_target ss_lib_target bin_target noinst_bin_target metalib_target
#foreach depend $[LOCAL_LIBS]
#define depend_metalib $[module $[TARGET],$[depend]]
#if $[ne $[depend_metalib],]
@ -740,7 +741,7 @@
#set depend_libs $[depend_libs] $[depend]
#endif
#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
// their components as well.

View File

@ -56,7 +56,7 @@
#if $[eq $[module $[TARGET],$[TARGET]],]
// This library is not on a metalib, so we can build it.
#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
// This library is on a metalib, so we can't build it, but we
// should build all the obj's that go into it.
@ -66,38 +66,37 @@
#end lib_target
// We need to know the various targets we'll be building.
// $[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.
// $[lib_targets] will be the list of dynamic and 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 $[forscopes metalib_target noinst_lib_target test_lib_target,$[if $[build_target],$[ODIR]/$[get_dllname $[TARGET]].$[dlllib]]] $[real_lib_target_libs]
#define static_lib_targets $[forscopes static_lib_target ss_lib_target,$[if $[build_target],$[ODIR]/$[get_dllname $[TARGET]].lib]]
#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 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]]
#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
// 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_scripts $[sort $[INSTALL_SCRIPTS(metalib_target lib_target static_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_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 dynamic_lib_target ss_lib_target bin_target)] $[INSTALL_HEADERS]]
#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_config $[sort $[INSTALL_CONFIG(metalib_target lib_target static_lib_target ss_lib_target bin_target)] $[INSTALL_CONFIG]]
#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 dynamic_lib_target ss_lib_target bin_target)] $[INSTALL_CONFIG]]
#define install_igatedb $[sort $[get_igatedb(metalib_target lib_target)]]
// 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 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)]]
#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 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 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 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
// 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
// rules for these. (We don't need dependency rules for dynamic libs,
// 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,
// from the context of a particular target.
@ -133,7 +132,7 @@
// $[complete_lpath] is rather like $[complete_ipath]: the list of
// 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
// should add to our -L list, from the context of a particular target.
@ -213,7 +212,7 @@
#define all_targets \
Makefile \
$[if $[dep_sources],$[DEPENDENCY_CACHE_FILENAME]] \
$[sort $[lib_targets] $[static_lib_targets] $[bin_targets]] \
$[sort $[lib_targets] $[bin_targets]] \
$[deferred_objs]
all : $[all_targets]
@ -221,16 +220,16 @@ all : $[all_targets]
test : $[test_bin_targets] $[test_lib_targets]
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]
$[TAB] rm -f $[patsubst %,$[%_obj],$[compile_sources]]
#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]
$[TAB] rm -f $[deferred_objs]
#endif
#if $[lib_targets] $[static_lib_targets] $[bin_targets] $[test_bin_targets]
$[TAB] rm -f $[lib_targets] $[static_lib_targets] $[bin_targets] $[test_bin_targets]
#if $[lib_targets] $[bin_targets] $[test_bin_targets]
$[TAB] rm -f $[lib_targets] $[bin_targets] $[test_bin_targets]
#endif
#if $[yxx_st_sources] $[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]/%]
#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-%] \
$[installed_files]
@ -295,7 +294,7 @@ install : all $[install_targets]
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]
$[TAB] rm -f $[sort $[installed_files]]
#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
// is a dynamic library.
// First, the dynamic and static libraries.
/////////////////////////////////////////////////////////////////////
#forscopes metalib_target 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]],]
#forscopes metalib_target lib_target static_lib_target dynamic_lib_target
// We might need to define a BUILDING_ symbol for win32. We use the
// 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 igatemout $[get_igatemout]
#if $[build_it]
#if $[build_lib]
// Now output the rule to actually link the library from all of its
// various .obj files.
#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]]
#endif
#define varname $[subst -,_,lib$[TARGET]_so]
#define varname $[subst -,_,.,_,lib$[TARGET]$[lib_ext]]
$[varname] = $[sources]
#define target $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
#define target $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#define sources $($[varname])
#define flags $[get_cflags] $[C++FLAGS] $[CFLAGS_OPT$[OPTIMIZE]] $[CFLAGS_SHARED] $[building_var:%=/D%]
#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] 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]]
$[TAB] $[shared_lib_c++]
$[TAB] $[link_lib_c++]
#else
$[TAB] $[shared_lib_c]
$[TAB] $[link_lib_c]
#endif
#else
#define VER_RESOURCE
.NOTPARALLEL $[target] : $[sources] $[DLLBASEADDRFILENAME:%=$[dtool_ver_dir_cyg]/%]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[shared_lib_c++]
$[TAB] $[link_lib_c++]
#else
$[TAB] $[shared_lib_c]
$[TAB] $[link_lib_c]
#endif
#endif
#if $[build_dlls]
$[ODIR]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
// Additional dependency rules for the implicit files that get built
// along with a .dll.
#if $[not $[lib_is_static]]
$[ODIR]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#endif
#if $[build_pdbs]
$[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
#if $[has_pdb]
$[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#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
// everything that goes along with it.
#define installed_files \
$[if $[build_it], \
$[if $[build_dlls],$[install_lib_dir]/$[get_dllname $[TARGET]].$[dlllib]] \
$[install_lib_dir]/$[get_dllname $[TARGET]].lib \
$[if $[and $[build_dlls],$[build_pdbs]],$[install_lib_dir]/$[get_dllname $[TARGET]].pdb] \
$[if $[build_lib], \
$[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext] \
$[if $[not $[lib_is_static]],$[install_lib_dir]/$[get_dllname $[TARGET]].lib] \
$[if $[has_pdb],$[install_lib_dir]/$[get_dllname $[TARGET]].pdb] \
] \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
$[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
@ -431,9 +430,8 @@ uninstall-lib$[TARGET] :
$[TAB] rm -f $[sort $[installed_files]]
#endif
#if $[build_dlls]
$[install_lib_dir]/$[get_dllname $[TARGET]].$[dlllib] : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
#define local $[get_dllname $[TARGET]].$[dlllib]
$[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext] : $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#define local $[get_dllname $[TARGET]]$[lib_ext]
#define dest $[install_lib_dir]
#if $[eq $[USE_COMPILER], MSVC8]
$[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
$[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
#define local $[get_dllname $[TARGET]].lib
#define dest $[install_lib_dir]
$[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
#define local $[get_dllname $[TARGET]].pdb
#define dest $[install_lib_dir]
@ -503,7 +501,7 @@ $[TAB] $[INTERROGATE_MODULE] -oc $[target] -module "$[igatemod]" -library "$[iga
#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
#define varname $[subst -,_,lib$[TARGET]_so]
#define varname $[subst -,_,.,_,lib$[TARGET]$[lib_ext]]
$[varname] = $[patsubst %,$[%_obj],$[compile_sources]]
#define target $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
#define target $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#define sources $($[varname])
#define $[VER_RESOURCE] $[COMPILED_RESOURCES]
$[target] : $[sources] $[static_lib_dependencies] $[GENERATED_SOURCES]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[shared_lib_c++]
$[TAB] $[link_lib_c++]
#else
$[TAB] $[shared_lib_c]
$[TAB] $[link_lib_c]
#endif
#if $[build_dlls]
$[ODIR]/$[get_dllname $[TARGET]].lib : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
#endif
#if $[build_pdbs]
$[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext] : $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#if $[has_pdb]
$[ODIR]/$[get_dllname $[TARGET]].pdb : $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#endif
// this section is all very clunky and not generalized enough
@ -591,47 +587,6 @@ $[TAB] $[MIDL_COMMAND]
#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
// are to be preprocessed with sed before being installed, for
@ -820,7 +775,7 @@ $[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 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
// printvar prints the unevaluated defn of the var
// #print TARGET=$[TARGET]
@ -906,7 +861,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 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
// data files.

View File

@ -160,7 +160,7 @@
// $[complete_lpath] is rather like $[complete_ipath]: the list of
// 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
// should add to our -L list, from the context of a particular target.

View File

@ -63,7 +63,7 @@
#if $[eq $[module $[TARGET],$[TARGET]],]
// This library is not on a metalib, so we can build it.
#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
// This library is on a metalib, so we can't build it, but we
// should build all the obj's that go into it.
@ -73,20 +73,19 @@
#end lib_target
// We need to know the various targets we'll be building.
// $[lib_targets] will be the list of dynamic libraries,
// $[static_lib_targets] the list of static libraries, and
// $[lib_targets] will be the list of dynamic and static libraries,
// $[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 static_lib_targets $[forscopes static_lib_target ss_lib_target,$[if $[build_target],$[ODIR]/$[get_dllname $[TARGET]].lib]]
#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 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]]
#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
// install.
@ -133,7 +132,7 @@
// with that happen to be static libs. We will introduce dependency
// rules for these. (We don't need dependency rules for dynamic libs,
// 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
// 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
// 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
// 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]
$[varname] = $[patsubst %,$[osfilename %],$[sources]]
#define target $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
#define target $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#define sources $($[varname])
#define flags $[get_cflags] $[C++FLAGS] $[CFLAGS_OPT$[OPTIMIZE]] $[CFLAGS_SHARED] $[building_var:%=/D%]
#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] 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]]
$[TAB] $[SHARED_LIB_C++] $[VER_RESOURCE]
$[TAB] $[link_lib_c++] $[VER_RESOURCE]
#else
$[TAB] $[SHARED_LIB_C] $[VER_RESOURCE]
$[TAB] $[link_lib_c] $[VER_RESOURCE]
#endif
#else
$[osfilename $[target]] : $[patsubst %,$[osfilename %],$[sources] $[DLLBASEADDRFILENAME:%=$[dtool_ver_dir_cyg]/%]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[SHARED_LIB_C++]
$[TAB] $[link_lib_c++]
#else
$[TAB] $[SHARED_LIB_C]
$[TAB] $[link_lib_c]
#endif
#endif
#if $[eq $[USE_COMPILER], MSVC8]
@ -424,10 +423,10 @@ $[TAB] mt -nologo -manifest $[target].manifest -outputresource:$[target];2
#endif
#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
#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
@ -436,8 +435,8 @@ $[osfilename $[ODIR]/$[get_dllname $[TARGET]].pdb] : $[patsubst %,$[osfilename %
// everything that goes along with it.
#define installed_files \
$[if $[build_it], \
$[if $[build_dlls],$[install_lib_dir]/$[get_dllname $[TARGET]].$[dlllib]] \
$[install_lib_dir]/$[get_dllname $[TARGET]].lib \
$[if $[build_dlls],$[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext]] \
$[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext] \
$[if $[and $[build_dlls],$[build_pdbs]],$[install_lib_dir]/$[get_dllname $[TARGET]].pdb] \
] \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
@ -456,8 +455,8 @@ $[TAB] if exist $[file] del /f $[file]
#endif
#if $[build_dlls]
$[osfilename $[install_lib_dir]/$[get_dllname $[TARGET]].$[dlllib]] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]].$[dlllib]]
#define local $[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]]$[lib_ext]
#define dest $[install_lib_dir]
#if $[eq $[USE_COMPILER], MSVC8]
$[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]]
#endif
$[osfilename $[install_lib_dir]/$[get_dllname $[TARGET]].lib] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]].lib]
#define local $[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_ext]
#define dest $[install_lib_dir]
$[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
#define varname $[subst -,_,lib$[TARGET]_so]
$[varname] = $[patsubst %,$[osfilename $[%_obj]],$[compile_sources]]
#define target $[ODIR]/$[get_dllname $[TARGET]].$[dlllib]
#define target $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
#define sources $($[varname])
$[osfilename $[target]] : $[patsubst %,$[osfilename %],$[sources] $[static_lib_dependencies] $[GENERATED_SOURCES]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[SHARED_LIB_C++] $[COMPILED_RESOURCES]
$[TAB] $[link_lib_c++] $[COMPILED_RESOURCES]
#else
$[TAB] $[SHARED_LIB_C] $[COMPILED_RESOURCES]
$[TAB] $[link_lib_c] $[COMPILED_RESOURCES]
#endif
#if $[eq $[USE_COMPILER], MSVC8]
$[TAB] mt -nologo -manifest $[target].manifest -outputresource:$[target];2
#endif
#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
#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
// this section is all very clunky and not generalized enough
@ -622,46 +621,46 @@ $[TAB] $[MIDL_COMMAND]
#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.
/////////////////////////////////////////////////////////////////////
// /////////////////////////////////////////////////////////////////////
// // 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 %,$[osfilename $[%_obj]],$[compile_sources]]
#define target $[ODIR]/$[get_dllname $[TARGET]].lib
#define sources $($[varname])
$[osfilename $[target]] : $[patsubst %,$[osfilename %],$[sources]]
#if $[filter %.cxx %.cpp %.yxx %.lxx,$[get_sources]]
$[TAB] $[STATIC_LIB_C++]
#else
$[TAB] $[STATIC_LIB_C]
#endif
// #forscopes static_lib_target ss_lib_target
// #define varname $[subst -,_,lib$[TARGET]_a]
// $[varname] = $[patsubst %,$[osfilename $[%_obj]],$[compile_sources]]
// #define target $[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]
// #define sources $($[varname])
// $[osfilename $[target]] : $[patsubst %,$[osfilename %],$[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]/%]
// #define installed_files \
// $[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext] \
// $[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
// $[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
// $[INSTALL_DATA:%=$[install_data_dir]/%] \
// $[INSTALL_CONFIG:%=$[install_config_dir]/%]
install-lib$[TARGET] : $[patsubst %,$[osfilename %],$[installed_files]]
// install-lib$[TARGET] : $[patsubst %,$[osfilename %],$[installed_files]]
uninstall-lib$[TARGET] :
#if $[installed_files]
#foreach file $[patsubst %,$[osfilename %],$[sort $[installed_files]]]
$[TAB] if exist $[file] del /f $[file]
#end file
#endif
// uninstall-lib$[TARGET] :
// #if $[installed_files]
// #foreach file $[patsubst %,$[osfilename %],$[sort $[installed_files]]]
// $[TAB] if exist $[file] del /f $[file]
// #end file
// #endif
$[osfilename $[install_lib_dir]/$[get_dllname $[TARGET]].lib] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]].lib]
#define local $[get_dllname $[TARGET]].lib
#define dest $[install_lib_dir]
$[TAB] xcopy /I/Y $[osfilename $[ODIR]/$[local]] $[osfilename $[dest]]
// $[osfilename $[install_lib_dir]/$[get_dllname $[TARGET]]$[lib_ext]] : $[patsubst %,$[osfilename %],$[ODIR]/$[get_dllname $[TARGET]]$[lib_ext]]
// #define local $[get_dllname $[TARGET]]$[lib_ext]
// #define dest $[install_lib_dir]
// $[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]
// We need to know the various targets we'll be building.
// $[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 $[active_target(metalib_target lib_target ss_lib_target noinst_lib_target):%=$[ODIR]/lib%$[dynamic_lib_ext]]
// $[lib_targets] will be the list of dynamic and 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 $[active_target_libext(metalib_target lib_target static_lib_target dynamic_lib_target ss_lib_target noinst_lib_target):%=$[ODIR]/lib%]
#define bundle_targets
#if $[bundle_ext]
#define bundle_targets $[active_target(metalib_target):%=$[ODIR]/lib%$[bundle_ext]]
#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 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_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_data $[sort $[INSTALL_DATA(metalib_target lib_target ss_lib_target static_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_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 dynamic_lib_target bin_target)] $[INSTALL_CONFIG]]
#define install_igatedb $[sort $[get_igatedb(metalib_target lib_target ss_lib_target)]]
// 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 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 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 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 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
// 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
// rules for these. (We don't need dependency rules for dynamic libs,
// 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,
// from the context of a particular target.
@ -103,7 +101,7 @@
// $[complete_lpath] is rather like $[complete_ipath]: the list of
// 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
// should add to our -L list, from the context of a particular target.
@ -200,20 +198,20 @@ include $[TAU_MAKEFILE]
#define all_targets \
Makefile \
$[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]
// The 'test' rule makes all the test_bin_targets.
test : $[test_bin_targets]
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]
$[TAB] rm -f $[patsubst %,$[%_obj],$[compile_sources]]
#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
#if $[lib_targets] $[bundle_targets] $[static_lib_targets] $[bin_targets] $[test_bin_targets]
$[TAB] rm -f $[lib_targets] $[bundle_targets] $[static_lib_targets] $[bin_targets] $[test_bin_targets]
#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] $[bin_targets] $[test_bin_targets]
$[TAB] rm -f $[lib_targets] $[bundle_targets] $[bin_targets] $[test_bin_targets]
#endif
#if $[yxx_st_sources] $[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
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 igateoutput $[get_igateoutput]
#define igatemscan $[get_igatemscan]
@ -253,7 +251,7 @@ $[TAB] rm -f $[igateoutput] $[$[igateoutput]_obj]
#if $[igatemout]
$[TAB] rm -f $[igatemout] $[$[igatemout]_obj]
#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
// 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]/%]
#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-%] \
$[installed_files]
@ -278,7 +276,7 @@ install : all $[install_targets]
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]
$[TAB] rm -f $[sort $[installed_files]]
#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
// is a dynamic library.
// First, the normally installed dynamic and static libraries.
/////////////////////////////////////////////////////////////////////
#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.
#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 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]]
#define target $[ODIR]/lib$[TARGET]$[dynamic_lib_ext]
#define target $[ODIR]/lib$[TARGET]$[lib_ext]
#define sources $($[varname])
$[target] : $[sources] $[static_lib_dependencies]
#if $[filter %.mm %.cxx %.yxx %.lxx,$[get_sources]]
$[TAB] $[shared_lib_c++]
$[TAB] $[link_lib_c++]
#else
$[TAB] $[shared_lib_c]
$[TAB] $[link_lib_c]
#endif
#if $[bundle_ext]
// Also generate the bundles (on OSX only).
#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]
$[TAB] $[BUNDLE_LIB_C++]
#endif // BUNDLE_EXT
@ -374,7 +371,7 @@ $[TAB] $[BUNDLE_LIB_C++]
// Here are the rules to install and uninstall the library and
// everything that goes along with it.
#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]] \
$[INSTALL_SCRIPTS:%=$[install_bin_dir]/%] \
$[INSTALL_HEADERS:%=$[install_headers_dir]/%] \
@ -389,8 +386,8 @@ uninstall-lib$[TARGET] :
$[TAB] rm -f $[sort $[installed_files]]
#endif
$[install_lib_dir]/lib$[TARGET]$[dynamic_lib_ext] : $[ODIR]/lib$[TARGET]$[dynamic_lib_ext]
#define local $[ODIR]/lib$[TARGET]$[dynamic_lib_ext]
$[install_lib_dir]/lib$[TARGET]$[lib_ext] : $[ODIR]/lib$[TARGET]$[lib_ext]
#define local $[ODIR]/lib$[TARGET]$[lib_ext]
#define dest $[install_lib_dir]
$[TAB] $[INSTALL]
@ -447,7 +444,7 @@ $[TAB] $[INTERROGATE_MODULE] -oc $[target] -module "$[igatemod]" -library "$[iga
#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
#define varname $[subst -,_,lib$[TARGET]_so]
$[varname] = $[patsubst %,$[%_obj],$[compile_sources]]
#define target $[ODIR]/lib$[TARGET]$[dynamic_lib_ext]
#define target $[ODIR]/lib$[TARGET]$[lib_ext]
#define sources $($[varname])
$[target] : $[sources] $[static_lib_dependencies]
#if $[filter %.mm %.cxx %.yxx %.lxx,$[get_sources]]
$[TAB] $[shared_lib_c++]
$[TAB] $[link_lib_c++]
#else
$[TAB] $[shared_lib_c]
$[TAB] $[link_lib_c]
#endif
#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
// are to be preprocessed with sed before being installed, for