Clean up libelf handling.

SConstruct:
    Clean up libelf handling.  Required better handling of
    per-build-root stuff in general (though libelf is the
    only thing in that category currently).
src/SConscript:
    No libelf-specific stuff in here anymore.
src/base/loader/elf_object.cc:
    Just need to include gelf.h... it includes libelf.h.

--HG--
extra : convert_revision : 3d6bdcf8233bda0ac8d08ff777de323df8aa45ae
This commit is contained in:
Steve Reinhardt
2006-05-22 21:51:59 -04:00
parent c88f0810c0
commit a7c95f702c
3 changed files with 28 additions and 28 deletions

View File

@@ -105,9 +105,10 @@ def rfind(l, elt, offs = -1):
# recognize that ALPHA_SE specifies the configuration because it
# follow 'build' in the bulid path.
# Generate a list of the unique configs that the collected targets
# reference.
# Generate a list of the unique build roots and configs that the
# collected targets reference.
build_paths = []
build_roots = []
for t in abs_targets:
path_dirs = t.split('/')
try:
@@ -115,9 +116,12 @@ for t in abs_targets:
except:
print "Error: no non-leaf 'build' dir found on target path", t
Exit(1)
config_dir = os.path.join('/',*path_dirs[:build_top+2])
if config_dir not in build_paths:
build_paths.append(config_dir)
build_root = os.path.join('/',*path_dirs[:build_top+1])
if build_root not in build_roots:
build_roots.append(build_root)
build_path = os.path.join('/',*path_dirs[:build_top+2])
if build_path not in build_paths:
build_paths.append(build_path)
###################################################
#
@@ -246,11 +250,6 @@ def no_action(target, source, env):
env.NoAction = Action(no_action, None)
# libelf build is described in its own SConscript file.
# SConscript-global is the build in build/libelf shared among all
# configs.
env.SConscript('src/libelf/SConscript-global', exports = 'env')
###################################################
#
# Define a SCons builder for configuration flag headers.
@@ -292,6 +291,12 @@ config_builder = Builder(emitter = config_emitter, action = config_action)
env.Append(BUILDERS = { 'ConfigFile' : config_builder })
# base help text
help_text = '''
Usage: scons [scons options] [build options] [target(s)]
'''
###################################################
#
# Define build environments for selected configurations.
@@ -301,18 +306,24 @@ env.Append(BUILDERS = { 'ConfigFile' : config_builder })
# rename base env
base_env = env
help_text = '''
Usage: scons [scons options] [build options] [target(s)]
'''
# Spme things (just libelf currently) are shared across all configs in
# a "build root". Need to define how to build these just once for
# each referenced root.
build_root_env = {}
for build_root in build_roots:
env = base_env.Copy()
env.SConscript('ext/libelf/SConscript',
build_dir = os.path.join(build_root, 'libelf'),
exports = 'env')
build_root_env[build_root] = env
for build_path in build_paths:
print "Building in", build_path
# build_dir is the tail component of build path, and is used to
# determine the build parameters (e.g., 'ALPHA_SE')
(build_root, build_dir) = os.path.split(build_path)
# Make a copy of the default environment to use for this config.
env = base_env.Copy()
# Make a copy of the build-root environment to use for this config.
env = build_root_env[build_root].Copy()
# Set env options according to the build directory config.
sticky_opts.files = []