|
@@ -1,167 +0,0 @@
|
|
|
-//
|
|
|
|
|
-// Global.stopgap.pp
|
|
|
|
|
-//
|
|
|
|
|
-// This file is read in before any of the individual Sources.pp files
|
|
|
|
|
-// are read. It defines a few global variables to assist
|
|
|
|
|
-// Template.stopgap.pp.
|
|
|
|
|
-//
|
|
|
|
|
-
|
|
|
|
|
-// This subroutine fills sources, alt_cflags, alt_ipath, alt_lpath,
|
|
|
|
|
-// alt_libs, and alt_ld as appropriate for the current target.
|
|
|
|
|
-#define sources
|
|
|
|
|
-#define alt_cflags
|
|
|
|
|
-#define alt_ipath
|
|
|
|
|
-#define alt_lpath
|
|
|
|
|
-#define alt_libs
|
|
|
|
|
-#define alt_ld
|
|
|
|
|
-#defsub get_sources
|
|
|
|
|
- #set sources $[get_sources]
|
|
|
|
|
- #set alt_cflags $[get_cflags]
|
|
|
|
|
- #set alt_ipath $[get_ipath]
|
|
|
|
|
- #set alt_lpath $[get_lpath]
|
|
|
|
|
- #set alt_libs $[get_libs]
|
|
|
|
|
- #set alt_ld $[get_ld]
|
|
|
|
|
-#end get_sources
|
|
|
|
|
-
|
|
|
|
|
-// This subroutine will set when_defer, when_no_defer, and when_either
|
|
|
|
|
-// correctly to the set of libs we should link with for the current
|
|
|
|
|
-// target.
|
|
|
|
|
-#define when_defer
|
|
|
|
|
-#define when_no_defer
|
|
|
|
|
-#define when_either
|
|
|
|
|
-#defsub get_libs
|
|
|
|
|
- // For the WHEN_DEFER case, we need to know the complete set of
|
|
|
|
|
- // metalibs that encapsulates each of our LOCAL_LIBS. In the case
|
|
|
|
|
- // where a particular library is not part of a metalib, we include the
|
|
|
|
|
- // library itself.
|
|
|
|
|
-
|
|
|
|
|
- #set when_defer
|
|
|
|
|
- #foreach lib $[LOCAL_LIBS]
|
|
|
|
|
- // Only consider libraries that we're actually building.
|
|
|
|
|
- #if $[all_libs $[build_directory],$[lib]]
|
|
|
|
|
- #define modmeta $[module $[TARGET],$[lib]]
|
|
|
|
|
- #if $[ne $[modmeta],]
|
|
|
|
|
- #set when_defer $[when_defer] $[modmeta]
|
|
|
|
|
- #else
|
|
|
|
|
- #set when_defer $[when_defer] $[lib]
|
|
|
|
|
- #endif
|
|
|
|
|
- #endif
|
|
|
|
|
- #end lib
|
|
|
|
|
- #set when_defer $[unique $[when_defer]] $[patsubst %:m,%,$[filter %:m,$[OTHER_LIBS]]]
|
|
|
|
|
-
|
|
|
|
|
- // Also filter out the libraries we don't want from when_no_defer, although
|
|
|
|
|
- // we don't need to translate these to metalibs.
|
|
|
|
|
- #set when_no_defer
|
|
|
|
|
- #foreach lib $[COMPONENT_LIBS] $[LOCAL_LIBS]
|
|
|
|
|
- #if $[all_libs $[build_directory],$[lib]]
|
|
|
|
|
- #set when_no_defer $[when_no_defer] $[lib]
|
|
|
|
|
- #endif
|
|
|
|
|
- #end lib
|
|
|
|
|
- #set when_no_defer $[unique $[when_no_defer]] $[patsubst %:c,%,$[filter %:c,$[OTHER_LIBS]]]
|
|
|
|
|
-
|
|
|
|
|
- // Finally, get the set of libraries that we want in either case. At
|
|
|
|
|
- // the moment, this is just the set of libraries in OTHER_LIBS that's
|
|
|
|
|
- // not flagged with either a :c or a :m.
|
|
|
|
|
- #set when_either $[filter-out %:m %:c,$[OTHER_LIBS]]
|
|
|
|
|
-#end get_libs
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-// This subroutine converts depend_libs from a list of plain library names
|
|
|
|
|
-// to a list of the form libname.so or libname.a, according to whether the
|
|
|
|
|
-// named libraries are static or dynamic.
|
|
|
|
|
-#defsub convert_depend_libs
|
|
|
|
|
- #define new_depend_libs
|
|
|
|
|
- #foreach lib $[depend_libs]
|
|
|
|
|
- // Make sure the library is something we're actually building.
|
|
|
|
|
- #if $[all_libs $[build_directory],$[lib]]
|
|
|
|
|
- #define libname $[static_libs lib$[TARGET].a,$[lib]] $[dynamic_libs lib$[TARGET].so,$[lib]]
|
|
|
|
|
- #if $[eq $[libname],]
|
|
|
|
|
- Warning: No such library $[lib], dependency of $[DIRNAME].
|
|
|
|
|
- #else
|
|
|
|
|
- #set new_depend_libs $[new_depend_libs] $[libname]
|
|
|
|
|
- #endif
|
|
|
|
|
- #endif
|
|
|
|
|
- #end lib
|
|
|
|
|
- #set depend_libs $[sort $[new_depend_libs]]
|
|
|
|
|
-#end convert_depend_libs
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-// This subroutine determines the set of libraries our various targets
|
|
|
|
|
-// depend on. This is a complicated definition. It is the union of
|
|
|
|
|
-// all of our targets' dependencies, except:
|
|
|
|
|
-
|
|
|
|
|
-// If a target is part of a metalib, it depends (a) directly on all of
|
|
|
|
|
-// its normal library dependencies that are part of the same metalib,
|
|
|
|
|
-// and (b) indirectly on all of the metalibs that every other library
|
|
|
|
|
-// dependency is part of. If a target is not part of a metalib, it is
|
|
|
|
|
-// the same as case (b) above.
|
|
|
|
|
-#define depend_libs
|
|
|
|
|
-#defsub get_depend_libs
|
|
|
|
|
- #set depend_libs
|
|
|
|
|
- #forscopes lib_target noinst_lib_target
|
|
|
|
|
- #define metalib $[module $[TARGET],$[TARGET]]
|
|
|
|
|
- #if $[ne $[metalib],]
|
|
|
|
|
- // This library is included on a metalib.
|
|
|
|
|
- #foreach depend $[LOCAL_LIBS]
|
|
|
|
|
- #define depend_metalib $[module $[TARGET],$[depend]]
|
|
|
|
|
- #if $[eq $[depend_metalib],$[metalib]]
|
|
|
|
|
- // Here's a dependent library in the *same* metalib.
|
|
|
|
|
- #set depend_libs $[depend_libs] $[depend]
|
|
|
|
|
- #elif $[ne $[depend_metalib],]
|
|
|
|
|
- // This dependent library is in a *different* metalib.
|
|
|
|
|
- #set depend_libs $[depend_libs] $[depend_metalib]
|
|
|
|
|
- #else
|
|
|
|
|
- // This dependent library is not in any metalib.
|
|
|
|
|
- #set depend_libs $[depend_libs] $[depend]
|
|
|
|
|
- #endif
|
|
|
|
|
- #end depend
|
|
|
|
|
- #else
|
|
|
|
|
- // This library is *not* included on a metalib.
|
|
|
|
|
- #foreach depend $[LOCAL_LIBS]
|
|
|
|
|
- #define depend_metalib $[module $[TARGET],$[depend]]
|
|
|
|
|
- #if $[ne $[depend_metalib],]
|
|
|
|
|
- // This dependent library is on a metalib.
|
|
|
|
|
- #set depend_libs $[depend_libs] $[depend_metalib]
|
|
|
|
|
- #else
|
|
|
|
|
- // This dependent library is not in any metalib.
|
|
|
|
|
- #set depend_libs $[depend_libs] $[depend]
|
|
|
|
|
- #endif
|
|
|
|
|
- #end depend
|
|
|
|
|
- #endif
|
|
|
|
|
- #end lib_target noinst_lib_target
|
|
|
|
|
-
|
|
|
|
|
- // These will never be part of a metalib.
|
|
|
|
|
- #forscopes static_lib_target bin_target noinst_bin_target metalib_target
|
|
|
|
|
- #foreach depend $[LOCAL_LIBS]
|
|
|
|
|
- #define depend_metalib $[module $[TARGET],$[depend]]
|
|
|
|
|
- #if $[ne $[depend_metalib],]
|
|
|
|
|
- // This dependent library is on a metalib.
|
|
|
|
|
- #set depend_libs $[depend_libs] $[depend_metalib]
|
|
|
|
|
- #else
|
|
|
|
|
- // This dependent library is not in any metalib.
|
|
|
|
|
- #set depend_libs $[depend_libs] $[depend]
|
|
|
|
|
- #endif
|
|
|
|
|
- #end depend
|
|
|
|
|
- #end static_lib_target bin_target noinst_bin_target metalib_target
|
|
|
|
|
-
|
|
|
|
|
- // In case we're defining any metalibs, these depend directly on
|
|
|
|
|
- // their components as well.
|
|
|
|
|
- #set depend_libs $[depend_libs] $[COMPONENT_LIBS(metalib_target)]
|
|
|
|
|
-
|
|
|
|
|
- // Now correct all the libraries listed in depend_libs to refer to a
|
|
|
|
|
- // real library name.
|
|
|
|
|
- #define new_depend_libs
|
|
|
|
|
- #foreach lib $[sort $[depend_libs]]
|
|
|
|
|
- // Make sure the library is something we're actually building.
|
|
|
|
|
- #if $[all_libs $[build_directory],$[lib]]
|
|
|
|
|
- #define libname $[static_libs lib$[TARGET].a,$[lib]] $[dynamic_libs lib$[TARGET].so,$[lib]]
|
|
|
|
|
- #if $[eq $[libname],]
|
|
|
|
|
- Warning: No such library $[lib], dependency of $[DIRNAME].
|
|
|
|
|
- #else
|
|
|
|
|
- #set new_depend_libs $[new_depend_libs] $[libname]
|
|
|
|
|
- #endif
|
|
|
|
|
- #endif
|
|
|
|
|
- #end lib
|
|
|
|
|
- #set depend_libs $[sort $[new_depend_libs]]
|
|
|
|
|
-
|
|
|
|
|
-#end get_depend_libs
|
|
|