[Xorp-cvs] SF.net SVN: xorp:[11655] trunk/xorp
bms_fbsd at users.sourceforge.net
bms_fbsd at users.sourceforge.net
Thu Dec 3 12:36:30 PST 2009
Revision: 11655
http://xorp.svn.sourceforge.net/xorp/?rev=11655&view=rev
Author: bms_fbsd
Date: 2009-12-03 20:36:29 +0000 (Thu, 03 Dec 2009)
Log Message:
-----------
FHS mega-commit.
Most of these changes affect run-time linkage only.
* Trim CPPPATH/LIBPATH defaults to BSD defaults only.
* Trim libproto's link line.
* Print libraries detected during the configure stage.
* Push use of 3rd party libraries down to each individual XORP component.
* Comment the fact that SCons's autoconf-like configuration support makes
this more of a hassle than it should be.
* Add support for optimize=minimal (-O1, and disable other optimizations).
* Determine the RPATH for each class of XORP component at the
top-level SConstruct.
* Set the RPATH, using env.Replace(), in each SConscript, so we have
fine-grained control.
* The use of os.path.relpath() here now requires Python 2.6.
* Add an additional symlink for the benefit of those components which
will be installed under $prefix/sbin.
* Do not install call_xrl/xorp_finder, they are not required in deployment.
Most, but not all, XORP binaries will now have resolved dynamic
links before 'scons install', due to the use of the rtld $ORIGIN feature.
All are confirmed to have no unresolved DT_NEEDED entries after
'scons install', using ldd(1); however a router has not yet been run.
Modified Paths:
--------------
trunk/xorp/SConstruct
trunk/xorp/bgp/SConscript
trunk/xorp/bgp/tools/SConscript
trunk/xorp/cli/SConscript
trunk/xorp/cli/libtecla/SConscript
trunk/xorp/cli/tools/SConscript
trunk/xorp/contrib/mld6igmp_lite/SConscript
trunk/xorp/contrib/olsr/SConscript
trunk/xorp/fea/SConscript
trunk/xorp/fea/tools/SConscript
trunk/xorp/fib2mrib/SConscript
trunk/xorp/libcomm/SConscript
trunk/xorp/libfeaclient/SConscript
trunk/xorp/libproto/SConscript
trunk/xorp/libxipc/SConscript
trunk/xorp/libxipc/tests/SConscript
trunk/xorp/libxorp/SConscript
trunk/xorp/mld6igmp/SConscript
trunk/xorp/mrt/SConscript
trunk/xorp/ospf/SConscript
trunk/xorp/ospf/tools/SConscript
trunk/xorp/pim/SConscript
trunk/xorp/policy/SConscript
trunk/xorp/policy/backend/SConscript
trunk/xorp/policy/common/SConscript
trunk/xorp/rib/SConscript
trunk/xorp/rib/tools/SConscript
trunk/xorp/rip/SConscript
trunk/xorp/rip/tools/SConscript
trunk/xorp/rtrmgr/SConscript
trunk/xorp/static_routes/SConscript
trunk/xorp/vrrp/SConscript
trunk/xorp/xrl/interfaces/SConscript
trunk/xorp/xrl/targets/SConscript
Modified: trunk/xorp/SConstruct
===================================================================
--- trunk/xorp/SConstruct 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/SConstruct 2009-12-03 20:36:29 UTC (rev 11655)
@@ -17,13 +17,9 @@
# $ID$
-# TODO tone down linker line spamming, -lpcre etc; stage use of LIBS please.
# TODO cross compiles.
-# TODO Add separate toolchain test for C99 varargs macros.
-# TODO Add separate toolchain test for GNU varargs macros.
# TODO Fix default include/lib paths, pass in from environment.
# TODO Merge scons-unfamiliar syntactic sugar from YHC's sconsfiles.
-# TODO conditionalize new directory layout here
gnutoolwarning = """
WARNING: The GNU %s was not detected on your system.
@@ -32,8 +28,8 @@
"""
# The XRL tgt-gen and clnt-gen scripts use Python 2.3+'s optparse
-# class.
-EnsurePythonVersion(2, 3)
+# class. However, os.path.relpath() requires Python 2.6.
+EnsurePythonVersion(2, 6)
# SCons 0.98.4 is the earliest release that we have tested. Earlier
# ones may work. If so, please submit a Trac issue so the check can
@@ -72,7 +68,8 @@
allowed_values=('no', 'yes', 'full', 'override'),
map={}, ignorecase=2),
EnumVariable('optimize', 'Build with optimization', 'yes',
- allowed_values=('no', 'yes', 'full', 'size', 'override'),
+ allowed_values=('no', 'minimal', 'yes', 'full',
+ 'size', 'override'),
map={}, ignorecase=2),
EnumVariable('profile', 'Build with profiling', 'no',
allowed_values=('no', 'gprof', 'pprof', 'override'),
@@ -122,13 +119,15 @@
log_args(builddir + '/.scons_build_args')
+# XXX TODO: Make initial CPPPATH/LIBPATH derive from
+# autodetected host system *or* command line.
env = Environment(
TOOLS = ['default', 'autotest', 'clntgen', 'tgtgen',
'TOOL_SUBST'],
ENV = os.environ,
BUILDDIR = builddir,
- CPPPATH=['/usr/sfw/include', '/opt/local/include', '/usr/local/include', '$BUILDDIR'],
- LIBPATH=['/usr/sfw/lib', '/opt/local/lib', '/usr/local/lib'],
+ CPPPATH=['/usr/local/include', '$BUILDDIR'],
+ LIBPATH=['/usr/local/lib'],
variables = vars)
prefix = env['prefix']
@@ -284,8 +283,9 @@
# The image layout is intended to be FHS 2.3 compliant, for the benefit
# of 3rd party packagers and distributors.
#
+env['xorp_rootdir'] = env['exec_prefix'] # used to determine RPATH
env['xorp_confdir'] = env['sysconfdir'] # path to xorp.conf
-env['xorp_libdir'] = env['libdir'] + '/xorp/lib' # Shared libraries
+env['xorp_libdir'] = env['libdir'] + '/xorp/lib'
env['xorp_moduledir'] = env['libdir'] + '/xorp/sbin' # Protocol modules
env['xorp_sbindir'] = env['sbindir'] # End-user binaries
env['xorp_templatedir'] = env['datadir'] + '/templates'
@@ -300,8 +300,14 @@
########## start configure magic
-if not env.GetOption('clean') and not env.GetOption('help'):
+if env.has_key('LIBS'):
+ pre_LIBS = env['LIBS']
+else:
+ pre_LIBS = []
+if not env.GetOption('clean') and \
+ not env.GetOption('help'):
+
env['MISSING_DEPS'] = []
env['SKIPPED_DEPS'] = []
@@ -381,8 +387,27 @@
if env['SKIPPED_DEPS']:
print 'Optional dependencies not found:\n - %s' % '\n - '.join(env['SKIPPED_DEPS'])
- conf.Finish()
+ newenv = conf.Finish()
+ #
+ # Configure will put all libraries in global link line, during checks.
+ # This is not what we want, as it means all binaries get these LIBS.
+ # We should be able to check, for libraries, at SCons level,
+ # by looking in conf.havedict, but that isn't exported.
+ #
+ # It seems we'd be best off defining a class of our own, containing
+ # things we want to see, and passing that in and out of the
+ # config tests when we split up allconfig.py.
+ # For now, let's assume that libraries are present, and link against
+ # them on a piecemeal basis.
+ #
+ post_LIBS = env['LIBS']
+ env['LIBS'] = pre_LIBS
+ print 'Detected libraries:',
+ for x in post_LIBS:
+ print x,
+ print
+
########## end configure magic
if SCons.Tool.FindTool(['gcc'], env) is None or \
@@ -401,7 +426,19 @@
Split(env['CFLAGS'])))
env.Replace( CXXFLAGS = filter(lambda s: not s.startswith('-O'),
Split(env['CXXFLAGS'])))
- bigodict = { 'no': '-O0', 'yes': '-O1', 'full': '-O2', 'size': '-Os' }
+ bigodict = { 'no': '-O0',
+ # 'minimal' denotes only those optimizations
+ # necessary to force gcc to perform the tree_sink
+ # pass, to elide most STL template instantiations.
+ 'minimal': "-O1 -fno-defer-pop -fno-delayed-branch \
+-fno-guess-branch-probability -fno-cprop-registers -fno-if-conversion \
+-fno-if-conversion2 -fno-tree-ccp -fno-tree-dce -fno-tree-dominator-opts \
+-fno-tree-dse -fno-tree-ter -fno-tree-lrs -fno-tree-sra \
+-fno-tree-copyrename -fno-tree-fre -fno-tree-ch -fno-unit-at-a-time \
+-fno-merge-constants",
+ 'yes': '-O1',
+ 'full': '-O2',
+ 'size': '-Os' }
bigoflag = bigodict[env['optimize']]
if not env['optimize'] == 'no':
env.AppendUnique(CFLAGS = [ bigoflag ])
@@ -529,42 +566,56 @@
#
# If rtld_origin is True, the linker will be passed a relative RPATH.
# This allows the package itself to be relocated in the filesystem
-# as a whole.
+# as a whole. This also allows us to run binaries before we ship them.
#
if env.has_key('SHAREDLIBS'):
if env['rtld_origin']:
+ #
# Build a subdirectory for holding symlinks to libraries upfront, so
# that binaries about to be built can be run from inside the BUILDDIR.
- # Build a further alias for the benefit of entities installed
- # in $xorp_sbindir.
- Execute(Mkdir(builddir + '/lib'))
- Execute(Mkdir(builddir + '/lib/xorp'))
- Execute(env.Symlink(builddir + '/lib', builddir + '/lib/xorp/lib'))
+ #
+ # XXX Assumes that $libdir is below $exec_prefix. If the
+ # user changes this, results are undefined.
+ #
+ # $BUILDIR/lib will contain .so symlinks
+ #
+ xorp_alias_libdir = os.path.join(builddir, 'lib')
+ Execute(Mkdir(xorp_alias_libdir))
+ env['xorp_alias_libdir'] = xorp_alias_libdir
+ #
+ # Build a further alias for the benefit of entities which
+ # will be later installed in $xorp_sbindir.
+ #
+ # $BUILDIR/lib/xorp/lib will point to $BUILDIR/lib
+ #
+ xorp_alias_subdir = os.path.join(xorp_alias_libdir, 'xorp')
+ Execute(Mkdir(xorp_alias_subdir))
+ #
+ xorp_module_alias_libdir = os.path.join(xorp_alias_subdir, 'lib')
+ Execute(env.Symlink(xorp_alias_libdir, xorp_module_alias_libdir))
+ env['xorp_module_alias_libdir'] = xorp_module_alias_libdir
# Tell rtld to turn on $ORIGIN processing by default.
# NOTE: GNU ld specific flag.
env.PrependUnique( LINKFLAGS = [ '-Wl,-z,origin' ] )
- #
- # Now fixup the RPATH.
- # FIXME This is not correct for all binaries. Some
- # get installed in locations other than $bindir.
- # The RPATH actually needs to get re-evaluated on each
- # binary target, depending on how far down they get installed.
- #
- #rellibdir = os.path.relpath(env.Dir('$libdir').abspath,
- # env.Dir('$bindir').abspath)
- rellibdir = '../lib'
- env.AppendUnique(RPATH = [
- env.Literal(os.path.join('\\$$ORIGIN', rellibdir))
- ])
+ # Set relative RPATH for each kind of installed XORP component.
+ env['xorp_sbin_rpath'] = os.path.join('\\$$ORIGIN',
+ os.path.relpath(env.Dir('$xorp_libdir').abspath,
+ env.Dir('$xorp_sbindir').abspath))
+ env['xorp_tool_rpath'] = os.path.join('\\$$ORIGIN',
+ os.path.relpath(env.Dir('$xorp_libdir').abspath,
+ env.Dir('$xorp_tooldir').abspath))
+ env['xorp_module_rpath'] = os.path.join('\\$$ORIGIN',
+ os.path.relpath(env.Dir('$xorp_libdir').abspath,
+ env.Dir('$xorp_moduledir').abspath))
else:
# Hardcode the RPATH to our final destination.
- # Developers will need to set LD_LIBRARY_PATH until they install.
- env.AppendUnique(RPATH = [
- #'$xorp_libdir',
- '$libdir',
- ])
+ # Developers will need to set LD_LIBRARY_PATH until they install
+ # binaries from the BUILDDIR.
+ env['xorp_sbin_rpath'] = env['xorp_libdir']
+ env['xorp_tool_rpath'] = env['xorp_libdir']
+ env['xorp_module_rpath'] = env['xorp_libdir']
# Export global symbols as dynamic in executables for runtime backtraces
# w/o GDB or corefiles in production deployments.
@@ -573,6 +624,7 @@
'-rdynamic',
])
-env.SConscript(['SConscript'], variant_dir='$BUILDDIR', exports='env', duplicate=0)
+env.SConscript(['SConscript'], variant_dir='$BUILDDIR',
+ exports='env', duplicate=0)
env.Help(vars.GenerateHelpText(env))
Modified: trunk/xorp/bgp/SConscript
===================================================================
--- trunk/xorp/bgp/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/bgp/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -67,15 +67,14 @@
'xorp_comm',
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
### libxorp_bgp
libxorp_bgp_env = env.Clone()
-#if is_shared:
-# libxorp_bgp_env.AppendUnique(LINKFLAGS = [
-# '-Wl,-z,defs',
-# ])
-
libxorp_bgp_srcs = [
'aspath.cc',
'attribute_manager.cc',
Modified: trunk/xorp/bgp/tools/SConscript
===================================================================
--- trunk/xorp/bgp/tools/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/bgp/tools/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -45,6 +45,10 @@
'xorp_comm',
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_tool_rpath'])
+])
+
### print_peers
ppeers_srcs = [
Modified: trunk/xorp/cli/SConscript
===================================================================
--- trunk/xorp/cli/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/cli/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -46,6 +46,7 @@
'$BUILDDIR/cli/libtecla',
])
+# Internal libraries.
env.AppendUnique(LIBS = [
'xif_cli_processor',
'xst_cli',
@@ -56,6 +57,15 @@
'xorp_core',
])
+# External libraries.
+env.AppendUnique(LIBS = [
+ 'pcreposix'
+])
+
+env.Replace(RPATH = [
+ env.Literal(env['xorp_tool_rpath'])
+])
+
libxorp_cli_srcs = [
'cli_client.cc',
'cli_command.cc',
Modified: trunk/xorp/cli/libtecla/SConscript
===================================================================
--- trunk/xorp/cli/libtecla/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/cli/libtecla/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -66,6 +66,10 @@
'version.c'
]
+# External libraries
+env.AppendUnique(LIBS = [
+ 'curses'
+])
if is_shared:
libxorp_tecla = env.SharedLibrary('libxorp_tecla', libtecla_srcs)
Modified: trunk/xorp/cli/tools/SConscript
===================================================================
--- trunk/xorp/cli/tools/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/cli/tools/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -45,6 +45,10 @@
'xorp_comm',
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_tool_rpath'])
+])
+
cligensrcs = [
'cli_generic.cc'
]
Modified: trunk/xorp/contrib/mld6igmp_lite/SConscript
===================================================================
--- trunk/xorp/contrib/mld6igmp_lite/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/contrib/mld6igmp_lite/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -62,6 +62,10 @@
'xorp_comm'
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
libmld6igmplitesrcs = [
'mld6igmp_config.cc',
'mld6igmp_group_record.cc',
Modified: trunk/xorp/contrib/olsr/SConscript
===================================================================
--- trunk/xorp/contrib/olsr/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/contrib/olsr/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -69,6 +69,10 @@
'xorp_comm',
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
### libolsr
libolsrsrcs = [
Modified: trunk/xorp/fea/SConscript
===================================================================
--- trunk/xorp/fea/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/fea/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -108,8 +108,15 @@
'xorp_core'
]
+# Internal libraries.
+# Note special use of conditional above.
env.PrependUnique(LIBS = libxorp_fea_linkorder)
+# External libraries.
+env.AppendUnique(LIBS = [
+ 'pcap'
+])
+
# Report unresolved symbol references when building the FEA.
if is_shared:
env.AppendUnique(LINKFLAGS = [ '-Wl,-z,defs', ])
@@ -147,6 +154,10 @@
'xrl_mfea_node.cc'
]
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
if is_shared:
libxorp_fea_srcs += libxfdp_srcs
libxorp_fea = env.SharedLibrary(target = 'libxorp_fea',
@@ -154,7 +165,8 @@
if env['rtld_origin']:
for obj in libxorp_fea:
env.AddPostAction(libxorp_fea,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
env.Alias('install',
env.InstallLibrary(env['xorp_libdir'], libxorp_fea))
else:
@@ -167,14 +179,6 @@
#######################
-# new path
-#feapath = '$bindir'
-
-# old path
-feapath = '$exec_prefix/fea'
-
-#######################
-
env = env.Clone()
if is_shared:
Modified: trunk/xorp/fea/tools/SConscript
===================================================================
--- trunk/xorp/fea/tools/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/fea/tools/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -49,6 +49,10 @@
'xorp_comm',
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_tool_rpath'])
+])
+
showifsrcs = [
'show_interfaces.cc'
]
Modified: trunk/xorp/fib2mrib/SConscript
===================================================================
--- trunk/xorp/fib2mrib/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/fib2mrib/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -61,6 +61,10 @@
'xorp_comm'
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
libxorp_fib2mrib_srcs = [
'fib2mrib_node.cc',
'fib2mrib_varrw.cc',
@@ -75,7 +79,8 @@
if env['rtld_origin']:
for obj in libxorp_fib2mrib:
env.AddPostAction(libxorp_fib2mrib,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_fib2mrib = env.StaticLibrary(
target = 'libxorp_fib2mrib',
Modified: trunk/xorp/libcomm/SConscript
===================================================================
--- trunk/xorp/libcomm/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/libcomm/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -42,7 +42,8 @@
if env['rtld_origin']:
for obj in libxorp_comm:
env.AddPostAction(libxorp_comm,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_comm = env.StaticLibrary(target = 'libxorp_comm', source = sources)
Modified: trunk/xorp/libfeaclient/SConscript
===================================================================
--- trunk/xorp/libfeaclient/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/libfeaclient/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -47,7 +47,8 @@
if env['rtld_origin']:
for obj in libxorp_fea_client:
env.AddPostAction(libxorp_fea_client,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_fea_client = env.StaticLibrary(target = 'libxorp_fea_client',
source = libxorp_fea_client_srcs)
Modified: trunk/xorp/libproto/SConscript
===================================================================
--- trunk/xorp/libproto/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/libproto/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -28,9 +28,11 @@
env.AppendUnique(CPPPATH = [ "#" ])
env.PrependUnique(LIBPATH = [ '$BUILDDIR/libxorp'] )
-# XXX 'crypto' is a base system prerequisite; use LINKFLAGS?
-env.AppendUnique(LIBS = ['xorp_core', 'crypto'])
+env.AppendUnique(LIBS = [
+ 'xorp_core'
+])
+
sources = [
'checksum.c',
'packet.cc',
@@ -46,7 +48,8 @@
if env['rtld_origin']:
for obj in libxorp_proto:
env.AddPostAction(libxorp_proto,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_proto = env.StaticLibrary(target = 'libxorp_proto',
source = sources)
Modified: trunk/xorp/libxipc/SConscript
===================================================================
--- trunk/xorp/libxipc/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/libxipc/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -41,11 +41,17 @@
'$BUILDDIR/libxorp'
])
+# Internal libraries
libxipc_env.AppendUnique(LIBS = [
'xorp_comm',
'xorp_core'
])
+# External libraries
+libxipc_env.AppendUnique(LIBS = [
+ 'crypto'
+ ])
+
libxipc_sources = [
'finder_client.cc',
'finder_client_observer.cc',
@@ -110,7 +116,8 @@
if env['rtld_origin']:
for obj in libxipc:
env.AddPostAction(libxipc,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
env.Alias('install',
env.InstallLibrary(env['xorp_libdir'], libxipc))
else:
@@ -173,7 +180,8 @@
if env['rtld_origin']:
for obj in libfinder:
env.AddPostAction(libfinder,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
env.Alias('install',
env.InstallLibrary(env['xorp_libdir'], libfinder))
else:
@@ -203,6 +211,10 @@
'xorp_core'
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_sbin_rpath'])
+])
+
xorp_finder = env.Program(target = 'xorp_finder',
source = [ 'finder_main.cc' ])
Modified: trunk/xorp/libxipc/tests/SConscript
===================================================================
--- trunk/xorp/libxipc/tests/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/libxipc/tests/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -87,7 +87,7 @@
return [ x.replace('$BUILDDIR', Dir(tenv['BUILDDIR']).abspath) \
for x in tenv['LIBPATH'] ]
-env['RPATH'] += local_rpath(env)
+env.AppendUnique(RPATH = local_rpath(env) )
env.PrependUnique(LIBS = [
'xif_test_xrls',
Modified: trunk/xorp/libxorp/SConscript
===================================================================
--- trunk/xorp/libxorp/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/libxorp/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -28,6 +28,10 @@
env.AppendUnique(CPPPATH = [ '#' ])
+# External libraries.
+# On BSD, and others, we need -lrt for clock_gettime().
+env.AppendUnique(LIBS = [ 'rt' ])
+
libxorp_core_srcs = [
# C files
'daemon.c',
@@ -91,7 +95,8 @@
if env['rtld_origin']:
for obj in libxorp_core:
env.AddPostAction(libxorp_core,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_core = env.StaticLibrary(target = 'libxorp_core',
source = libxorp_core_srcs)
Modified: trunk/xorp/mld6igmp/SConscript
===================================================================
--- trunk/xorp/mld6igmp/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/mld6igmp/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -72,6 +72,10 @@
'xrl_mld6igmp_node.cc'
]
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
if is_shared:
libxorp_mld6igmp = env.SharedLibrary(target = 'libxorp_mld6igmp',
source = libxorp_mld6igmp_srcs,
@@ -79,7 +83,8 @@
if env['rtld_origin']:
for obj in libxorp_mld6igmp:
env.AddPostAction(libxorp_mld6igmp,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_mld6igmp = env.StaticLibrary(target = 'libxorp_mld6igmp',
source = libxorp_mld6igmp_srcs,
Modified: trunk/xorp/mrt/SConscript
===================================================================
--- trunk/xorp/mrt/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/mrt/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -39,7 +39,8 @@
if env['rtld_origin']:
for obj in libxorp_mrt:
env.AddPostAction(libxorp_mrt,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_mrt = env.StaticLibrary(target = 'libxorp_mrt', source = sources)
Modified: trunk/xorp/ospf/SConscript
===================================================================
--- trunk/xorp/ospf/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/ospf/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -70,6 +70,10 @@
'xorp_comm',
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
libxorp_ospf_srcs = [
'auth.cc',
'area_router.cc',
@@ -94,7 +98,8 @@
if env['rtld_origin']:
for obj in libxorp_ospf:
env.AddPostAction(libxorp_ospf,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_ospf = env.StaticLibrary(target = 'libxorp_ospf',
source = libxorp_ospf_srcs,
Modified: trunk/xorp/ospf/tools/SConscript
===================================================================
--- trunk/xorp/ospf/tools/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/ospf/tools/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -48,6 +48,10 @@
'xorp_comm',
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_tool_rpath'])
+])
+
cleardbsrcs = [
'clear_database.cc'
]
Modified: trunk/xorp/pim/SConscript
===================================================================
--- trunk/xorp/pim/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/pim/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -64,6 +64,10 @@
'xorp_comm'
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
libxorp_pim_srcs = [
'pim_bsr.cc',
'pim_config.cc',
@@ -105,7 +109,8 @@
if env['rtld_origin']:
for obj in libxorp_pim:
env.AddPostAction(libxorp_pim,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
env.Alias('install',
env.InstallLibrary(env['xorp_libdir'], libxorp_pim))
else:
Modified: trunk/xorp/policy/SConscript
===================================================================
--- trunk/xorp/policy/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/policy/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -61,6 +61,10 @@
'xorp_comm'
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
libxorp_policy_srcs = [
'code.cc',
'code_generator.cc',
@@ -100,7 +104,8 @@
if env['rtld_origin']:
for obj in libxorp_policy:
env.AddPostAction(libxorp_policy,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxorp_policy))
else:
libxorp_policy = env.StaticLibrary(target = 'libxorp_policy',
Modified: trunk/xorp/policy/backend/SConscript
===================================================================
--- trunk/xorp/policy/backend/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/policy/backend/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -47,7 +47,8 @@
if env['rtld_origin']:
for obj in libpbe:
env.AddPostAction(libpbe,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
env.Alias('install',
env.InstallLibrary(env['xorp_libdir'], libpbe))
else:
Modified: trunk/xorp/policy/common/SConscript
===================================================================
--- trunk/xorp/policy/common/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/policy/common/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -38,6 +38,11 @@
'varrw.cc'
]
+# External libraries
+env.AppendUnique(LIBS = [
+ 'pcreposix'
+])
+
is_shared = env.has_key('SHAREDLIBS')
# deal with bgp aspath shared code
@@ -48,7 +53,8 @@
if env['rtld_origin']:
for obj in libpcm:
env.AddPostAction(libpcm,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libpcm))
else:
obj_aspath = env.StaticObject(target = 'aspath',
Modified: trunk/xorp/rib/SConscript
===================================================================
--- trunk/xorp/rib/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/rib/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -75,6 +75,10 @@
'xorp_comm'
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
libxorp_rib_srcs = [
'profile_vars.cc',
'protocol.cc',
@@ -105,7 +109,8 @@
if env['rtld_origin']:
for obj in libxorp_rib:
env.AddPostAction(libxorp_rib,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_rib = env.StaticLibrary(target = 'libxorp_rib',
source = libxorp_rib_srcs,
Modified: trunk/xorp/rib/tools/SConscript
===================================================================
--- trunk/xorp/rib/tools/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/rib/tools/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -48,6 +48,10 @@
'xorp_comm',
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_tool_rpath'])
+])
+
shdistsrcs = [
'show_distances.cc'
]
Modified: trunk/xorp/rip/SConscript
===================================================================
--- trunk/xorp/rip/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/rip/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -28,7 +28,7 @@
SConscript(dirs = subdirs, exports='env')
e = env.Clone()
-is_shared = env.has_key('SHAREDLIBS')
+is_shared = e.has_key('SHAREDLIBS')
#
# NB: The same sources are used for RIP and RIPng. We use separate
@@ -123,24 +123,30 @@
'xorp_core',
])
+e.Replace(RPATH = [
+ e.Literal(e['xorp_module_rpath'])
+])
+
if is_shared:
libxorp_rip = e.SharedLibrary(target = 'libxorp_rip',
source = libxorp_rip_srcs,
LIBS = '')
- if env['rtld_origin']:
+ if e['rtld_origin']:
for obj in libxorp_rip:
- env.AddPostAction(libxorp_rip,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ e.AddPostAction(libxorp_rip,
+ e.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
libxorp_rip_xrl = e.SharedLibrary(target = 'libxorp_rip_xrl',
source = libxorp_rip_xrl_srcs,
LIBS = '')
- if env['rtld_origin']:
+ if e['rtld_origin']:
for obj in libxorp_rip_xrl:
- env.AddPostAction(libxorp_rip_xrl,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ e.AddPostAction(libxorp_rip_xrl,
+ e.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
e.Alias('install',
- [ e.InstallLibrary(env['xorp_libdir'], libxorp_rip),
- e.InstallLibrary(env['xorp_libdir'], libxorp_rip_xrl) ])
+ [ e.InstallLibrary(e['xorp_libdir'], libxorp_rip),
+ e.InstallLibrary(e['xorp_libdir'], libxorp_rip_xrl) ])
else:
libxorp_rip = e.StaticLibrary(target = 'libxorp_rip',
source = libxorp_rip_srcs,
@@ -150,7 +156,7 @@
LIBS = '')
rip = e.Program(target = 'xorp_rip', source = ripsrcs)
-e.Alias('install', e.InstallProgram(env['xorp_moduledir'], rip))
+e.Alias('install', e.InstallProgram(e['xorp_moduledir'], rip))
#
# RIPng
@@ -201,24 +207,30 @@
'xorp_core',
])
+e.Replace(RPATH = [
+ e.Literal(e['xorp_module_rpath'])
+])
+
if is_shared:
libxorp_ripng = e.SharedLibrary(target = 'libxorp_ripng',
source = libxorp_rip_srcs,
LIBS = '')
- if env['rtld_origin']:
+ if e['rtld_origin']:
for obj in libxorp_ripng:
- env.AddPostAction(libxorp_ripng,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ e.AddPostAction(libxorp_ripng,
+ e.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
libxorp_ripngxrl = e.SharedLibrary(target = 'libxorp_ripng_xrl',
source = libxorp_rip_xrl_srcs,
LIBS = '')
- if env['rtld_origin']:
+ if e['rtld_origin']:
for obj in libxorp_ripngxrl:
- env.AddPostAction(libxorp_ripngxrl,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ e.AddPostAction(libxorp_ripngxrl,
+ e.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
e.Alias('install',
- [ e.InstallLibrary(env['xorp_libdir'], libxorp_ripng),
- e.InstallLibrary(env['xorp_libdir'], libxorp_ripngxrl) ])
+ [ e.InstallLibrary(e['xorp_libdir'], libxorp_ripng),
+ e.InstallLibrary(e['xorp_libdir'], libxorp_ripngxrl) ])
else:
libxorp_ripng = e.StaticLibrary(target = 'libxorp_ripng',
source = libxorp_rip_srcs,
@@ -228,6 +240,6 @@
LIBS = '')
ripng = e.Program(target = 'xorp_ripng', source = ripngsrcs)
-e.Alias('install', e.InstallProgram(env['xorp_moduledir'], ripng))
+e.Alias('install', e.InstallProgram(e['xorp_moduledir'], ripng))
Default(rip, ripng)
Modified: trunk/xorp/rip/tools/SConscript
===================================================================
--- trunk/xorp/rip/tools/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/rip/tools/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -46,6 +46,10 @@
'xorp_comm',
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_tool_rpath'])
+])
+
shpeersrcs = [
'show_peer_stats.cc',
'common.cc'
Modified: trunk/xorp/rtrmgr/SConscript
===================================================================
--- trunk/xorp/rtrmgr/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/rtrmgr/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -122,6 +122,13 @@
libxorp_rtrmgr = libxorp_rtrmgr_env.StaticLibrary(target = 'libxorp_rtrmgr',
source = libxorp_rtrmgr_srcs)
+#
+# Common RPATH.
+#
+env.Replace(RPATH = [
+ env.Literal(env['xorp_sbin_rpath'])
+])
+
### rtrmgr
rtrmgr_env = env.Clone()
Modified: trunk/xorp/static_routes/SConscript
===================================================================
--- trunk/xorp/static_routes/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/static_routes/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -60,6 +60,10 @@
'xorp_comm',
])
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
libxorp_static_routes_srcs = [
'static_routes_node.cc',
'static_routes_varrw.cc',
@@ -78,7 +82,8 @@
if env['rtld_origin']:
for obj in libxorp_static_routes:
env.AddPostAction(libxorp_static_routes,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_static_routes = env.StaticLibrary(
target = 'libxorp_static_routes',
Modified: trunk/xorp/vrrp/SConscript
===================================================================
--- trunk/xorp/vrrp/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/vrrp/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -68,6 +68,10 @@
'vrrp_vif.cc'
]
+env.Replace(RPATH = [
+ env.Literal(env['xorp_module_rpath'])
+])
+
if is_shared:
libxorp_vrrp = env.SharedLibrary(target = 'libxorp_vrrp',
source = libxorp_vrrp_srcs,
@@ -75,7 +79,8 @@
if env['rtld_origin']:
for obj in libxorp_vrrp:
env.AddPostAction(libxorp_vrrp,
- env.Symlink(obj.abspath, env['BUILDDIR'] + '/lib/' + str(obj)))
+ env.Symlink(obj.abspath,
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
libxorp_vrrp = env.StaticLibrary(target = 'libxorp_vrrp',
source = libxorp_vrrp_srcs,
Modified: trunk/xorp/xrl/interfaces/SConscript
===================================================================
--- trunk/xorp/xrl/interfaces/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/xrl/interfaces/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -110,7 +110,7 @@
for obj in lib:
env.AddPostAction(lib,
env.Symlink(obj.abspath,
- env['BUILDDIR'] + '/lib/' + str(obj)))
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
lib = env.StaticLibrary(tgt, src)
Modified: trunk/xorp/xrl/targets/SConscript
===================================================================
--- trunk/xorp/xrl/targets/SConscript 2009-12-03 17:09:29 UTC (rev 11654)
+++ trunk/xorp/xrl/targets/SConscript 2009-12-03 20:36:29 UTC (rev 11655)
@@ -96,7 +96,7 @@
for obj in lib:
env.AddPostAction(lib,
env.Symlink(obj.abspath,
- env['BUILDDIR'] + '/lib/' + str(obj)))
+ os.path.join(env['xorp_alias_libdir'], str(obj))))
else:
lib = env.StaticLibrary(target, source)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Xorp-cvs
mailing list