diff --git a/Contrib/AdvSplash/SConscript b/Contrib/AdvSplash/SConscript index 94dcff2e..77f316c1 100644 --- a/Contrib/AdvSplash/SConscript +++ b/Contrib/AdvSplash/SConscript @@ -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) diff --git a/Contrib/Banner/SConscript b/Contrib/Banner/SConscript index 0d181802..ecbee11b 100644 --- a/Contrib/Banner/SConscript +++ b/Contrib/Banner/SConscript @@ -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) diff --git a/Contrib/BgImage/SConscript b/Contrib/BgImage/SConscript index 0805b7b8..7bab97fb 100644 --- a/Contrib/BgImage/SConscript +++ b/Contrib/BgImage/SConscript @@ -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) diff --git a/Contrib/Dialer/SConscript b/Contrib/Dialer/SConscript index f8e430a2..0562184a 100644 --- a/Contrib/Dialer/SConscript +++ b/Contrib/Dialer/SConscript @@ -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) diff --git a/Contrib/InstallOptions/SConscript b/Contrib/InstallOptions/SConscript index d00b5c33..357267f2 100644 --- a/Contrib/InstallOptions/SConscript +++ b/Contrib/InstallOptions/SConscript @@ -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) diff --git a/Contrib/LangDLL/SConscript b/Contrib/LangDLL/SConscript index 62875071..46f78c5a 100644 --- a/Contrib/LangDLL/SConscript +++ b/Contrib/LangDLL/SConscript @@ -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) diff --git a/Contrib/Library/TypeLib/SConscript b/Contrib/Library/TypeLib/SConscript index 8251ac10..4ba60b39 100644 --- a/Contrib/Library/TypeLib/SConscript +++ b/Contrib/Library/TypeLib/SConscript @@ -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') diff --git a/Contrib/Math/SConscript b/Contrib/Math/SConscript index 04131977..bd2ed826 100644 --- a/Contrib/Math/SConscript +++ b/Contrib/Math/SConscript @@ -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']) diff --git a/Contrib/NSIS Update/SConscript b/Contrib/NSIS Update/SConscript index 03c38158..c6d66e59 100644 --- a/Contrib/NSIS Update/SConscript +++ b/Contrib/NSIS Update/SConscript @@ -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']) diff --git a/Contrib/NSISdl/SConscript b/Contrib/NSISdl/SConscript index f821b934..a2d493da 100644 --- a/Contrib/NSISdl/SConscript +++ b/Contrib/NSISdl/SConscript @@ -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) diff --git a/Contrib/Splash/SConscript b/Contrib/Splash/SConscript index bfa5a316..50de0097 100644 --- a/Contrib/Splash/SConscript +++ b/Contrib/Splash/SConscript @@ -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) diff --git a/Contrib/StartMenu/SConscript b/Contrib/StartMenu/SConscript index 3fbbcde6..d404baa0 100644 --- a/Contrib/StartMenu/SConscript +++ b/Contrib/StartMenu/SConscript @@ -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') diff --git a/Contrib/System/SConscript b/Contrib/System/SConscript index ca28a7cb..7eb057ec 100644 --- a/Contrib/System/SConscript +++ b/Contrib/System/SConscript @@ -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']) diff --git a/Contrib/UserInfo/SConscript b/Contrib/UserInfo/SConscript index a7d58857..e6b91653 100644 --- a/Contrib/UserInfo/SConscript +++ b/Contrib/UserInfo/SConscript @@ -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') diff --git a/Contrib/VPatch/Source/Plugin/SConscript b/Contrib/VPatch/Source/Plugin/SConscript index 924c471d..7bab93e6 100644 --- a/Contrib/VPatch/Source/Plugin/SConscript +++ b/Contrib/VPatch/Source/Plugin/SConscript @@ -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) diff --git a/Contrib/nsExec/SConscript b/Contrib/nsExec/SConscript index f69e412a..a63414f0 100644 --- a/Contrib/nsExec/SConscript +++ b/Contrib/nsExec/SConscript @@ -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') diff --git a/SConstruct b/SConstruct index a2ad905d..e90dea60 100644 --- a/SConstruct +++ b/SConstruct @@ -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