From 7fd7935769e6d98273424308683f050fef4053e3 Mon Sep 17 00:00:00 2001 From: kichik Date: Sat, 16 Jul 2005 10:14:20 +0000 Subject: [PATCH] cleaned up a bit git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4173 212acab6-be3b-0410-9dea-997c60f758d6 --- SConstruct | 121 +++++++++++++++++++++++++---------------------------- 1 file changed, 57 insertions(+), 64 deletions(-) diff --git a/SConstruct b/SConstruct index e8d7c33c..a84bce2d 100644 --- a/SConstruct +++ b/SConstruct @@ -214,32 +214,31 @@ defenv.Distribute('', 'nsisconf.nsh') ####### Stubs ### ###################################################################### -for stub in stubs: - if stub in defenv['SKIPSTUBS']: - continue - - build_dir = '$BUILD_PREFIX/stub_%s' % stub +def BuildStub(compression, solid): env = stub_env.Copy() - env.Append(LINKFLAGS = '$MAP_FLAG') - exports = { 'env' : env, 'compression' : stub, 'solid_compression' : 0 } + + suffix = '' + if solid: + suffix = '_solid' + + build_dir = '$BUILD_PREFIX/stub_%s%s' % (compression, suffix) + + exports = { 'env' : env, 'compression' : compression, 'solid_compression' : solid } target = defenv.SConscript(dirs = 'Source/exehead', build_dir = build_dir, duplicate = 0, exports = exports) env.SideEffect('%s/stub_%s.map' % (build_dir, stub), target) - defenv.DistributeAs('Stubs/%s' % stub, target) + env.DistributeAs('Stubs/%s%s' % (compression, suffix), target) - build_dir = '$BUILD_PREFIX/stub_%s_solid' % stub - env = stub_env.Copy() - env.Append(LINKFLAGS = '$MAP_FLAG') - exports = { 'env' : env, 'compression' : stub, 'solid_compression' : 1 } + defenv.Alias(compression, target) + defenv.Alias('stubs', target) - solid_target = defenv.SConscript(dirs = 'Source/exehead', build_dir = build_dir, duplicate = 0, exports = exports) - env.SideEffect('%s/stub_%s.map' % (build_dir, stub), solid_target) +for stub in stubs: + if stub in defenv['SKIPSTUBS']: + continue - defenv.DistributeAs('Stubs/%s_solid' % stub, solid_target) - - defenv.Alias(stub, target + solid_target) - defenv.Alias('stubs', target + solid_target) + BuildStub(stub, 0) + BuildStub(stub, 1) defenv.DistributeAs('Stubs/uninst', 'Source/exehead/uninst.ico') @@ -250,8 +249,6 @@ defenv.DistributeAs('Stubs/uninst', 'Source/exehead/uninst.ico') build_dir = '$BUILD_PREFIX/makensis' exports = { 'env' : makensis_env } -makensis_env.Append(LINKFLAGS = '$MAP_FLAG') - makensis = defenv.SConscript(dirs = 'Source', build_dir = build_dir, duplicate = 0, exports = exports) makensis_env.SideEffect('%s/makensis.map' % build_dir, makensis) @@ -261,6 +258,38 @@ defenv.Alias('makensis', makensis) ins = defenv.Distribute('', makensis) defenv.Alias('install-compiler', ins) +###################################################################### +####### Common Functions ### +###################################################################### + +def AddEnvStandardFlags(env, defines, flags, entry, nodeflib): + if defines: + env.Append(CPPDEFINES = defines) + if flags: + env.Append(CCFLAGS = flags) + + if entry: + env.Append(LINKFLAGS = '${ENTRY_FLAG("%s")}' % entry) + + if nodeflib: + env.Append(LINKFLAGS = '$NODEFLIBS_FLAG') # no default libraries + +def AppendRES(env, source, res, resources): + if res: + target_res = env.RES(res) + if resources: + env.Depends(target_res, resources) + source.append(target_res) + +def CleanMap(env, target, target_name): + env.Clean(target, File(target_name + '.map')) + +def DistributeExtras(env, target, examples, docs): + if examples: + env.DistributeExamples(target, examples) + if docs: + env.DistributeDocs(target, docs) + ###################################################################### ####### Plug-ins ### ###################################################################### @@ -274,37 +303,19 @@ def BuildPlugin(target, source, libs, examples = None, docs = None, if cppused and env['CPP_REQUIRES_STDLIB']: nodeflib = 0 - if defines: - env.Append(CPPDEFINES = defines) - if flags: - env.Append(CCFLAGS = flags) + AddEnvStandardFlags(env, defines, flags, entry, nodeflib) - if entry: - env.Append(LINKFLAGS = '${ENTRY_FLAG("%s")}' % entry) - - if nodeflib: - env.Append(LINKFLAGS = '$NODEFLIBS_FLAG') # no default libraries - - env.Append(LINKFLAGS = '$MAP_FLAG') - - if res: - target_res = env.RES(res_target, res) - if resources: - env.Depends(target_res, resources) - source = source + target_res + AppendRES(env, source, res, resources) plugin = env.SharedLibrary(target, source, LIBS = libs) defenv.Alias(target, plugin) defenv.Alias('plugins', plugin) - env.Clean(plugin, File(target + '.map')) + CleanMap(env, plugin, target) env.Distribute('Plugins', plugin) - if examples: - env.DistributeExamples(target, examples) - if docs: - env.DistributeDocs(target, docs) + DistributeExtras(env, target, examples, docs) for plugin in plugins: if plugin in defenv['SKIPPLUGINS']: @@ -326,30 +337,15 @@ def BuildUtil(target, source, libs, entry = None, res = None, examples = None, docs = None): env = util_env.Copy() - if defines: - env.Append(CPPDEFINES = defines) - if flags: - env.Append(CCFLAGS = flags) + AddEnvStandardFlags(env, defines, flags, entry, nodeflib) - if entry: - env.Append(LINKFLAGS = '${ENTRY_FLAG("%s")}' % entry) - - if nodeflib: - env.Append(LINKFLAGS = '$NODEFLIBS_FLAG') # no default libraries - - env.Append(LINKFLAGS = '$MAP_FLAG') - - if res: - target_res = env.RES(res) - if resources: - env.Depends(target_res, resources) - source = source + target_res + AppendRES(env, source, res, resources) util = env.Program(target, source, LIBS = libs) defenv.Alias(target, util) defenv.Alias('utils', util) - env.Clean(util, File(target + '.map')) + CleanMap(env, util, target) if install is not None: ins = env.Distribute(install, util) @@ -359,10 +355,7 @@ def BuildUtil(target, source, libs, entry = None, res = None, ins = env.DistributeAs(install_as, util) defenv.Alias('install-utils', ins) - if examples: - env.DistributeExamples(target, examples) - if docs: - env.DistributeDocs(target, docs) + DistributeExtras(env, target, examples, docs) return util