less code in SConscripts, more shared code in SConstruct

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3986 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2005-04-22 16:51:00 +00:00
parent cdf3529eff
commit 4a77cdc9fe
17 changed files with 62 additions and 112 deletions

View file

@ -11,10 +11,6 @@ libs = Split("""
winmm
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs)

View file

@ -9,10 +9,6 @@ libs = Split("""
user32
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs)

View file

@ -11,10 +11,6 @@ libs = Split("""
winmm
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs)

View file

@ -10,10 +10,6 @@ libs = Split("""
delayimp
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs)

View file

@ -16,12 +16,6 @@ libs = Split("""
comdlg32
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
files += env.RES(resources)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs, res = resources)

View file

@ -14,12 +14,6 @@ libs = Split("""
gdi32
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
files += env.RES(resources)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs, res = resources)

View file

@ -10,10 +10,7 @@ libs = Split("""
oleaut32
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target, entry = 'DllMain')
BuildPlugin(target, files, libs)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')

View file

@ -11,12 +11,6 @@ libs = Split("""
kernel32
""")
Import('PluginEnv')
Import('BuildPlugin env')
env = PluginEnv(target, entry = 'DllMain', nodeflib = 0)
env.Append(CPPFLAGS = env['CPP_FLAG'])
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs, nodeflib = 0, flags = env['CPP_FLAG'])

View file

@ -1,2 +1,4 @@
cmd = Command('#bin/NSISUpdate.exe', 'NSISUpdate.nsi', 'makensis $SOURCE')
Depends(cmd, ['makensis', 'stubs', 'System', 'NSISdl', 'Dialer', 'nsExec', 'InstallOptions'])
Import('env')
#cmd = Command('#bin/NSISUpdate.exe', 'NSISUpdate.nsi', 'makensis $SOURCE')
#Depends(cmd, ['makensis', 'stubs', 'System', 'NSISdl', 'Dialer', 'nsExec', 'InstallOptions'])

View file

@ -15,10 +15,6 @@ libs = Split("""
ws2_32
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs)

View file

@ -11,10 +11,6 @@ libs = Split("""
winmm
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs)

View file

@ -15,12 +15,7 @@ libs = Split("""
shell32
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
BuildPlugin(target, files, libs, res = resources, res_target = 'StartMenuRC')
files += env.RES('StartMenuRC', resources)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')

View file

@ -20,14 +20,6 @@ libs = Split("""
ole32
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target, entry = '_DllMainCRTStartup', nodeflib = 0)
env.Append(CPPDEFINES = ['SYSTEM_EXPORTS'])
#files += [File(obj) for obj in objs]
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs, entry = '_DllMainCRTStartup', nodeflib = 0, defines = ['SYSTEM_EXPORTS'])

View file

@ -9,10 +9,7 @@ libs = Split("""
advapi32
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
BuildPlugin(target, files, libs)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')

View file

@ -8,10 +8,6 @@ libs = Split("""
kernel32
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target, entry = 'DllMain')
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')
BuildPlugin(target, files, libs)

View file

@ -10,10 +10,7 @@ libs = Split("""
advapi32
""")
Import('PluginEnv')
Import('BuildPlugin')
env = PluginEnv(target)
BuildPlugin(target, files, libs)
plugin = env.SharedLibrary(target, files, LIBS = libs)
Return('plugin')

View file

@ -148,27 +148,43 @@ defenv.Install('$PREFIX', makensis)
####### Plug-ins ###
######################################################################
def PluginEnv(target, entry = 'DllMain', nodeflib = 1):
def BuildPlugin(target, source, libs, entry = 'DllMain', res = None,
res_target = None, resources = None, defines = None,
flags = None, nodeflib = 1):
env = plugin_env.Copy()
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
env.Append(LINKFLAGS = '${ENTRY_FLAG("%s")}' % entry) # entry function
env.Append(LINKFLAGS = '${MAP_FLAG("%s")}' % target) # generate map file
env.Append(LINKFLAGS = '${MAP_FLAG("%s")}' % target)
env.SideEffect(File(target + '.map'), target)
if res:
target_res = env.RES(res_target, res)
if resources:
env.Depends(target_res, resources)
source = source + target_res
return env
plugin = env.SharedLibrary(target, source, LIBS = libs)
Alias(target, plugin)
env.Clean(plugin, File(target + '.map'))
env.Install('$PREFIX/Plugins', plugin)
for plugin in plugins:
path = 'Contrib/' + plugin
build_dir = '$BUILD_PREFIX/' + plugin
exports = 'PluginEnv'
exports = {'BuildPlugin' : BuildPlugin, 'env' : plugin_env.Copy()}
plugin_dll = defenv.SConscript(dirs = path, build_dir = build_dir, duplicate = 0, exports = exports)
defenv.Install('$PREFIX/Plugins', plugin_dll)
defenv.SConscript(dirs = path, build_dir = build_dir, duplicate = 0, exports = exports)
######################################################################
####### Utilities ###
@ -176,13 +192,13 @@ for plugin in plugins:
def BuildUtil(target, source, libs, entry = None, res = None,
resources = None, defines = None, flags = None,
install = None):
install = None):
env = util_env.Copy()
if defines:
env.Append(CPPDEFINES = defines)
if flags:
env.Append(CPPFLAGS = flags)
env.Append(CCFLAGS = flags)
if entry:
env.Append(LINKFLAGS = '${ENTRY_FLAG("%s")}' % entry)
@ -201,7 +217,7 @@ def BuildUtil(target, source, libs, entry = None, res = None,
env.Clean(util, File(target + '.map'))
if install is not None:
defenv.Install('$PREFIX/%s' % install, util)
env.Install('$PREFIX/%s' % install, util)
for util in utils:
path = 'Contrib/' + util