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:
parent
cdf3529eff
commit
4a77cdc9fe
17 changed files with 62 additions and 112 deletions
|
@ -11,10 +11,6 @@ libs = Split("""
|
||||||
winmm
|
winmm
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target)
|
BuildPlugin(target, files, libs)
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -9,10 +9,6 @@ libs = Split("""
|
||||||
user32
|
user32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target)
|
BuildPlugin(target, files, libs)
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -11,10 +11,6 @@ libs = Split("""
|
||||||
winmm
|
winmm
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target)
|
BuildPlugin(target, files, libs)
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -10,10 +10,6 @@ libs = Split("""
|
||||||
delayimp
|
delayimp
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target)
|
BuildPlugin(target, files, libs)
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -16,12 +16,6 @@ libs = Split("""
|
||||||
comdlg32
|
comdlg32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target)
|
BuildPlugin(target, files, libs, res = resources)
|
||||||
|
|
||||||
files += env.RES(resources)
|
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -14,12 +14,6 @@ libs = Split("""
|
||||||
gdi32
|
gdi32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target)
|
BuildPlugin(target, files, libs, res = resources)
|
||||||
|
|
||||||
files += env.RES(resources)
|
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -10,10 +10,7 @@ libs = Split("""
|
||||||
oleaut32
|
oleaut32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target, entry = 'DllMain')
|
BuildPlugin(target, files, libs)
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -11,12 +11,6 @@ libs = Split("""
|
||||||
kernel32
|
kernel32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin env')
|
||||||
|
|
||||||
env = PluginEnv(target, entry = 'DllMain', nodeflib = 0)
|
BuildPlugin(target, files, libs, nodeflib = 0, flags = env['CPP_FLAG'])
|
||||||
|
|
||||||
env.Append(CPPFLAGS = env['CPP_FLAG'])
|
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
cmd = Command('#bin/NSISUpdate.exe', 'NSISUpdate.nsi', 'makensis $SOURCE')
|
Import('env')
|
||||||
Depends(cmd, ['makensis', 'stubs', 'System', 'NSISdl', 'Dialer', 'nsExec', 'InstallOptions'])
|
|
||||||
|
#cmd = Command('#bin/NSISUpdate.exe', 'NSISUpdate.nsi', 'makensis $SOURCE')
|
||||||
|
#Depends(cmd, ['makensis', 'stubs', 'System', 'NSISdl', 'Dialer', 'nsExec', 'InstallOptions'])
|
||||||
|
|
|
@ -15,10 +15,6 @@ libs = Split("""
|
||||||
ws2_32
|
ws2_32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target)
|
BuildPlugin(target, files, libs)
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -11,10 +11,6 @@ libs = Split("""
|
||||||
winmm
|
winmm
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target)
|
BuildPlugin(target, files, libs)
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -15,12 +15,7 @@ libs = Split("""
|
||||||
shell32
|
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')
|
|
||||||
|
|
|
@ -20,14 +20,6 @@ libs = Split("""
|
||||||
ole32
|
ole32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target, entry = '_DllMainCRTStartup', nodeflib = 0)
|
BuildPlugin(target, files, libs, entry = '_DllMainCRTStartup', nodeflib = 0, defines = ['SYSTEM_EXPORTS'])
|
||||||
|
|
||||||
env.Append(CPPDEFINES = ['SYSTEM_EXPORTS'])
|
|
||||||
|
|
||||||
#files += [File(obj) for obj in objs]
|
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -9,10 +9,7 @@ libs = Split("""
|
||||||
advapi32
|
advapi32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target)
|
BuildPlugin(target, files, libs)
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -8,10 +8,6 @@ libs = Split("""
|
||||||
kernel32
|
kernel32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target, entry = 'DllMain')
|
BuildPlugin(target, files, libs)
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
|
@ -10,10 +10,7 @@ libs = Split("""
|
||||||
advapi32
|
advapi32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('PluginEnv')
|
Import('BuildPlugin')
|
||||||
|
|
||||||
env = PluginEnv(target)
|
BuildPlugin(target, files, libs)
|
||||||
|
|
||||||
plugin = env.SharedLibrary(target, files, LIBS = libs)
|
|
||||||
|
|
||||||
Return('plugin')
|
|
||||||
|
|
40
SConstruct
40
SConstruct
|
@ -148,27 +148,43 @@ defenv.Install('$PREFIX', makensis)
|
||||||
####### Plug-ins ###
|
####### 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()
|
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:
|
if nodeflib:
|
||||||
env.Append(LINKFLAGS = '$NODEFLIBS_FLAG') # no default libraries
|
env.Append(LINKFLAGS = '$NODEFLIBS_FLAG') # no default libraries
|
||||||
|
|
||||||
env.Append(LINKFLAGS = '${ENTRY_FLAG("%s")}' % entry) # entry function
|
env.Append(LINKFLAGS = '${MAP_FLAG("%s")}' % target)
|
||||||
env.Append(LINKFLAGS = '${MAP_FLAG("%s")}' % target) # generate map file
|
|
||||||
|
|
||||||
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:
|
for plugin in plugins:
|
||||||
path = 'Contrib/' + plugin
|
path = 'Contrib/' + plugin
|
||||||
build_dir = '$BUILD_PREFIX/' + 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.SConscript(dirs = path, build_dir = build_dir, duplicate = 0, exports = exports)
|
||||||
|
|
||||||
defenv.Install('$PREFIX/Plugins', plugin_dll)
|
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
####### Utilities ###
|
####### Utilities ###
|
||||||
|
@ -176,13 +192,13 @@ for plugin in plugins:
|
||||||
|
|
||||||
def BuildUtil(target, source, libs, entry = None, res = None,
|
def BuildUtil(target, source, libs, entry = None, res = None,
|
||||||
resources = None, defines = None, flags = None,
|
resources = None, defines = None, flags = None,
|
||||||
install = None):
|
install = None):
|
||||||
env = util_env.Copy()
|
env = util_env.Copy()
|
||||||
|
|
||||||
if defines:
|
if defines:
|
||||||
env.Append(CPPDEFINES = defines)
|
env.Append(CPPDEFINES = defines)
|
||||||
if flags:
|
if flags:
|
||||||
env.Append(CPPFLAGS = flags)
|
env.Append(CCFLAGS = flags)
|
||||||
|
|
||||||
if entry:
|
if entry:
|
||||||
env.Append(LINKFLAGS = '${ENTRY_FLAG("%s")}' % 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'))
|
env.Clean(util, File(target + '.map'))
|
||||||
|
|
||||||
if install is not None:
|
if install is not None:
|
||||||
defenv.Install('$PREFIX/%s' % install, util)
|
env.Install('$PREFIX/%s' % install, util)
|
||||||
|
|
||||||
for util in utils:
|
for util in utils:
|
||||||
path = 'Contrib/' + util
|
path = 'Contrib/' + util
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue