install and distribute examples, contribs and documentation

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4005 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2005-04-30 18:04:55 +00:00
parent dc128c6928
commit 53fa1d20ac
21 changed files with 480 additions and 45 deletions

View file

@ -11,6 +11,14 @@ libs = Split("""
winmm winmm
""") """)
examples = Split("""
Example.nsi
""")
docs = Split("""
advsplash.txt
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs) BuildPlugin(target, files, libs, examples, docs)

View file

@ -9,6 +9,14 @@ libs = Split("""
user32 user32
""") """)
examples = Split("""
Example.nsi
""")
docs = Split("""
Readme.txt
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs) BuildPlugin(target, files, libs, examples, docs)

View file

@ -11,6 +11,14 @@ libs = Split("""
winmm winmm
""") """)
examples = Split("""
Example.nsi
""")
docs = Split("""
BgImage.txt
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs) BuildPlugin(target, files, libs, examples, docs)

View file

@ -9,6 +9,10 @@ libs = Split("""
wininet wininet
""") """)
docs = Split("""
Dialer.txt
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs) BuildPlugin(target, files, libs, docs = docs)

View file

@ -0,0 +1,86 @@
checks = Split("""
big.bmp
classic-cross.bmp
classic.bmp
colorful.bmp
grey-cross.bmp
grey.bmp
modern.bmp
red-round.bmp
red.bmp
simple-round.bmp
simple-round2.bmp
simple.bmp
""")
headers = Split("""
nsis-r.bmp
nsis.bmp
orange-nsis.bmp
orange-r-nsis.bmp
orange-r.bmp
orange-uninstall-nsis.bmp
orange-uninstall-r-nsis.bmp
orange-uninstall-r.bmp
orange-uninstall.bmp
orange.bmp
win.bmp
""")
icons = Split("""
arrow-install.ico
arrow-uninstall.ico
arrow2-install.ico
arrow2-uninstall.ico
box-install.ico
box-uninstall.ico
classic-install.ico
classic-uninstall.ico
llama-blue.ico
llama-grey.ico
modern-install-blue-full.ico
modern-install-blue.ico
modern-install-colorful.ico
modern-install-full.ico
modern-install.ico
modern-uninstall-blue-full.ico
modern-uninstall-blue.ico
modern-uninstall-colorful.ico
modern-uninstall-full.ico
modern-uninstall.ico
nsis1-install.ico
nsis1-uninstall.ico
orange-install-nsis.ico
orange-install.ico
orange-uninstall-nsis.ico
orange-uninstall.ico
pixel-install.ico
pixel-uninstall.ico
win-install.ico
win-uninstall.ico
""")
wizards = Split("""
arrow.bmp
llama.bmp
nsis.bmp
nullsoft.bmp
orange-nsis.bmp
orange-uninstall-nsis.bmp
orange-uninstall.bmp
orange.bmp
win.bmp
""")
Import('defenv')
def join(prefix, list):
return map(lambda x: '%s/%s' % (prefix, x), list)
def dist(dir, files):
defenv.DistributeContribs('Graphics/%s' % dir, join(dir, files))
dist('Checks', checks)
dist('Header', headers)
dist('Icons', icons)
dist('Wizard', wizards)

View file

@ -16,6 +16,21 @@ libs = Split("""
comdlg32 comdlg32
""") """)
examples = Split("""
test.nsi
test.ini
testimgs.nsi
testimgs.ini
testlink.nsi
testlink.ini
testnotify.nsi
testnotify.ini
""")
docs = Split("""
Readme.html
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs, res = resources) BuildPlugin(target, files, libs, examples, docs, res = resources)

View file

@ -0,0 +1,53 @@
languages = Split("""
Albanian.nlf
Arabic.nlf
Belarusian.nlf
Breton.nlf
Bulgarian.nlf
Catalan.nlf
Croatian.nlf
Czech.nlf
Danish.nlf
Dutch.nlf
English.nlf
Estonian.nlf
Farsi.nlf
Finnish.nlf
French.nlf
German.nlf
Greek.nlf
Hebrew.nlf
Hungarian.nlf
Icelandic.nlf
Indonesian.nlf
Italian.nlf
Japanese.nlf
Korean.nlf
Latvian.nlf
Lithuanian.nlf
Luxembourgish.nlf
Macedonian.nlf
Malaysian.nlf
Mongolian.nlf
Norwegian.nlf
Polish.nlf
Portuguese.nlf
PortugueseBR.nlf
Romanian.nlf
Russian.nlf
Serbian.nlf
SerbianLatin.nlf
SimpChinese.nlf
Slovak.nlf
Slovenian.nlf
Spanish.nlf
Swedish.nlf
Thai.nlf
TradChinese.nlf
Turkish.nlf
Ukrainian.nlf
""")
Import('defenv')
defenv.DistributeContribs('Language files', languages)

View file

@ -11,6 +11,17 @@ libs = Split("""
kernel32 kernel32
""") """)
examples = Split("""
math.nsi
mathtest.nsi
mathtest.ini
mathtest.txt
""")
docs = Split("""
Math.txt
""")
Import('BuildPlugin env') Import('BuildPlugin env')
BuildPlugin(target, files, libs, nodeflib = 0, flags = env['CPP_FLAG']) BuildPlugin(target, files, libs, examples, docs, nodeflib = 0, flags = ['$CPP_FLAG'])

View file

@ -0,0 +1,81 @@
target = 'Modern UI'
docs = Split("""
Changelog.txt
License.txt
Readme.html
""")
doc_images = Split("""
closed.gif
header.gif
open.gif
screen1.png
screen2.png
""")
contribs = Split("""
ioSpecial.ini
System.nsh
""")
languages = Split("""
Albanian.nsh
Arabic.nsh
Belarusian.nsh
Breton.nsh
Bulgarian.nsh
Catalan.nsh
Croatian.nsh
Czech.nsh
Danish.nsh
Default.nsh
Dutch.nsh
English.nsh
Estonian.nsh
Farsi.nsh
Finnish.nsh
French.nsh
German.nsh
Greek.nsh
Hebrew.nsh
Hungarian.nsh
Icelandic.nsh
Indonesian.nsh
Italian.nsh
Japanese.nsh
Korean.nsh
Latvian.nsh
Lithuanian.nsh
Luxembourgish.nsh
Macedonian.nsh
Malaysian.nsh
Mongolian.nsh
Norwegian.nsh
Polish.nsh
Portuguese.nsh
PortugueseBR.nsh
Romanian.nsh
Russian.nsh
Serbian.nsh
SerbianLatin.nsh
SimpChinese.nsh
Slovak.nsh
Slovenian.nsh
Spanish.nsh
Swedish.nsh
Thai.nsh
TradChinese.nsh
Turkish.nsh
Ukrainian.nsh
""")
Import('defenv')
def join(prefix, list):
return map(lambda x: '%s/%s' % (prefix, x), list)
defenv.DistributeDocs(target, docs)
defenv.DistributeDocs('%s/%s' % (target, 'images'), join('images', doc_images))
defenv.DistributeContribs(target, contribs)
defenv.DistributeContribs('%s/%s' % (target, 'Language files'), join('Language files', languages))

View file

@ -15,6 +15,10 @@ libs = Split("""
ws2_32 ws2_32
""") """)
docs = Split("""
ReadMe.txt
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs) BuildPlugin(target, files, libs, docs = docs)

View file

@ -11,6 +11,14 @@ libs = Split("""
winmm winmm
""") """)
examples = Split("""
Example.nsi
""")
docs = Split("""
splash.txt
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs) BuildPlugin(target, files, libs, examples, docs)

View file

@ -15,7 +15,14 @@ libs = Split("""
shell32 shell32
""") """)
examples = Split("""
Example.nsi
""")
docs = Split("""
Readme.txt
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs, res = resources, res_target = 'StartMenuRC') BuildPlugin(target, files, libs, examples, docs, res = resources, res_target = 'StartMenuRC')

View file

@ -20,6 +20,26 @@ libs = Split("""
ole32 ole32
""") """)
examples = Split("""
System.nsi
System.nsh
SysFunc.nsh
""")
docs = Split("""
System.html
WhatsNew.txt
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs, entry = '_DllMainCRTStartup', nodeflib = 0, defines = ['SYSTEM_EXPORTS']) BuildPlugin(
target,
files,
libs,
examples,
docs,
entry = '_DllMainCRTStartup',
nodeflib = 0,
defines = ['SYSTEM_EXPORTS']
)

13
Contrib/UIs/SConscript Normal file
View file

@ -0,0 +1,13 @@
uis = Split("""
default.exe
modern.exe
modern_headerbmp.exe
modern_headerbmpr.exe
modern_nodesc.exe
modern_smalldesc.exe
sdbarker_tiny.exe
""")
Import('defenv')
defenv.DistributeContribs('UIs', uis)

View file

@ -9,7 +9,10 @@ libs = Split("""
advapi32 advapi32
""") """)
examples = Split("""
UserInfo.nsi
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs) BuildPlugin(target, files, libs, examples)

View file

@ -10,7 +10,15 @@ libs = Split("""
advapi32 advapi32
""") """)
examples = Split("""
test.nsi
""")
docs = Split("""
nsExec.txt
""")
Import('BuildPlugin') Import('BuildPlugin')
BuildPlugin(target, files, libs) BuildPlugin(target, files, libs, examples, docs)

View file

@ -28,6 +28,14 @@ libs = Split("""
shell32 shell32
""") """)
Import('BuildUtil') headers = Split("""
Base.nsh
Classic.nsh
Modern.nsh
""")
Import('BuildUtil defenv')
BuildUtil(target, files, libs, res = rc, resources = resources, install = 'Bin') BuildUtil(target, files, libs, res = rc, resources = resources, install = 'Bin')
defenv.DistributeContribs(target, headers)

View file

@ -75,4 +75,4 @@ env.Append(BUILDERS = {'HalibutCHM' : builder})
chm = env.HalibutCHM('NSIS.chm', [chm_config_but] + buts) chm = env.HalibutCHM('NSIS.chm', [chm_config_but] + buts)
env.Depends(chm, halibut) env.Depends(chm, halibut)
env.Install('$PREFIX', chm) env.Distribute('', chm)

View file

@ -24,12 +24,13 @@ mui_examples = [
'Modern UI/InstallOptions.nsi', 'Modern UI/InstallOptions.nsi',
'Modern UI/MultiLanguage.nsi', 'Modern UI/MultiLanguage.nsi',
'Modern UI/StartMenu.nsi', 'Modern UI/StartMenu.nsi',
'Modern UI/WelcomeFinish.nsi' 'Modern UI/WelcomeFinish.nsi',
'Modern UI/ioA.ini',
'Modern UI/ioB.ini',
'Modern UI/ioC.ini'
] ]
Import('env') Import('env')
env.Install('$PREFIX/Examples', examples) env.DistributeExamples('', examples)
env.Install('$PREFIX/Examples/Modern UI', mui_examples) env.DistributeExamples('Modern UI', mui_examples)
env.Alias('install-examples', '$PREFIX/Examples')

15
Include/SConscript Normal file
View file

@ -0,0 +1,15 @@
includes = Split("""
Colors.nsh
Library.nsh
LogicLib.nsh
MUI.nsh
Sections.nsh
StrFunc.nsh
UpgradeDLL.nsh
WinMessages.nsh
""")
Import('env')
env.Distribute('Include', includes)
env.DistributeDocs('StrFunc', 'StrFunc.txt')

View file

@ -1,6 +1,6 @@
## TODO ## TODO
# #
# * VPatch GenPat (wait for v3 written in C) # * VPatch GenPat & distribution
# * Write SConscript for NSIS Menu # * Write SConscript for NSIS Menu
# - Use inheritance instead of current wxWidgets patches # - Use inheritance instead of current wxWidgets patches
# - Compile for POSIX too? wxWidgets is cross platform after all... # - Compile for POSIX too? wxWidgets is cross platform after all...
@ -8,6 +8,8 @@
# #
## ##
VERSION = '2.06'
stubs = [ stubs = [
'bzip2', 'bzip2',
'lzma', 'lzma',
@ -42,17 +44,23 @@ utils = [
'zip2exe' 'zip2exe'
] ]
import os misc = [
'Graphics',
'Language files',
'Modern UI',
'UIs'
]
defenv = Environment() defenv = Environment()
defenv.SConsignFile()
Export('defenv') Export('defenv')
###################################################################### ######################################################################
####### options ### ####### Options ###
###################################################################### ######################################################################
opts = Options() opts = Options()
opts.Add(PathOption('PREFIX', 'Installation prefix', GetLaunchDir())) opts.Add(PathOption('PREFIX', 'Installation prefix', None))
opts.Add(('MINGWPREFIX', 'MinGW toolset prefix', 0)) opts.Add(('MINGWPREFIX', 'MinGW toolset prefix', 0))
opts.Add(BoolOption('MSTOOLKIT', 'Use Microsoft Visual C++ Toolkit', 'no')) opts.Add(BoolOption('MSTOOLKIT', 'Use Microsoft Visual C++ Toolkit', 'no'))
opts.Add(BoolOption('DEBUG', 'Build executables with debugging information', 'no')) opts.Add(BoolOption('DEBUG', 'Build executables with debugging information', 'no'))
@ -62,6 +70,45 @@ opts.Update(defenv)
Help(opts.GenerateHelpText(defenv)) Help(opts.GenerateHelpText(defenv))
######################################################################
####### Functions ###
######################################################################
defenv['DISTDIR'] = '#nsis-%s' % VERSION
def Distribute(dir, files):
if defenv.has_key('PREFIX') and defenv['PREFIX']:
ins = defenv.Install('$PREFIX/%s' % dir, files)
return ins
defenv.Install('$DISTDIR/%s' % dir, files)
return []
def DistributeAs(path, file):
if defenv.has_key('PREFIX') and defenv['PREFIX']:
ins = defenv.InstallAs('$PREFIX/%s' % path, file)
return ins
defenv.InstallAs('$DISTDIR/%s' % path, file)
return []
def DistributeExamples(dir, examples):
return Distribute('Examples/%s' % dir, examples)
def DistributeDocs(dir, docs):
return Distribute('Docs/%s' % dir, docs)
def DistributeContribs(dir, contribs):
return Distribute('Contrib/%s' % dir, contribs)
defenv.Distribute = Distribute
defenv.DistributeAs = DistributeAs
defenv.DistributeExamples = DistributeExamples
defenv.DistributeDocs = DistributeDocs
defenv.DistributeContribs = DistributeContribs
######################################################################
####### Environments ###
######################################################################
if defenv['DEBUG']: if defenv['DEBUG']:
defenv.Replace(BUILD_PREFIX = 'build/debug') defenv.Replace(BUILD_PREFIX = 'build/debug')
else: else:
@ -70,9 +117,7 @@ else:
if defenv['MSTOOLKIT']: if defenv['MSTOOLKIT']:
defenv.Tool('mstoolkit', toolpath = ['SCons/Tools']) defenv.Tool('mstoolkit', toolpath = ['SCons/Tools'])
###################################################################### Default(defenv['BUILD_PREFIX'])
####### environments ###
######################################################################
tools = defenv['TOOLS'] tools = defenv['TOOLS']
@ -91,21 +136,31 @@ plugin_env = envs[2]
util_env = envs[3] util_env = envs[3]
###################################################################### ######################################################################
####### aliases ### ####### Aliases ###
###################################################################### ######################################################################
defenv.Alias('install', '$PREFIX') defenv.Alias('install', '$PREFIX')
defenv.Alias('install-docs', '$PREFIX/NSIS.chm') defenv.Alias('install-docs', '$PREFIX/NSIS.chm')
defenv.Alias('install-docs', '$PREFIX/Docs')
defenv.Alias('install-examples', '$PREFIX/Examples')
defenv.Alias('install-plugins', '$PREFIX/Plugins')
defenv.Alias('install-stubs', '$PREFIX/Stubs')
defenv.Alias('install-includes', '$PREFIX/Include')
# defined elsewhere: # defined elsewhere:
# install-compiler # install-compiler
# install-stubs
# install-plugins
# install-utils # install-utils
# install-examples
###################################################################### ######################################################################
####### stubs ### ####### Distribution ###
######################################################################
dist_zip = 'nsis-%s.zip' % VERSION
defenv.Zip(dist_zip, '$DISTDIR')
defenv.Alias('dist', dist_zip)
######################################################################
####### Stubs ###
###################################################################### ######################################################################
for stub in stubs: for stub in stubs:
@ -117,7 +172,7 @@ for stub in stubs:
target = defenv.SConscript(dirs = 'Source/exehead', build_dir = build_dir, duplicate = 0, exports = exports) target = defenv.SConscript(dirs = 'Source/exehead', build_dir = build_dir, duplicate = 0, exports = exports)
env.SideEffect('%s/stub_%s.map' % (build_dir, stub), target) env.SideEffect('%s/stub_%s.map' % (build_dir, stub), target)
ins_target = defenv.InstallAs('$PREFIX/Stubs/%s' % stub, target) defenv.DistributeAs('Stubs/%s' % stub, target)
build_dir = '$BUILD_PREFIX/stub_%s_solid' % stub build_dir = '$BUILD_PREFIX/stub_%s_solid' % stub
env = stub_env.Copy() env = stub_env.Copy()
@ -127,14 +182,12 @@ for stub in stubs:
solid_target = defenv.SConscript(dirs = 'Source/exehead', build_dir = build_dir, duplicate = 0, exports = exports) 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) env.SideEffect('%s/stub_%s.map' % (build_dir, stub), solid_target)
ins_solid_target = defenv.InstallAs('$PREFIX/Stubs/%s_solid' % stub, solid_target) defenv.DistributeAs('Stubs/%s_solid' % stub, solid_target)
defenv.Alias(stub, target + solid_target) defenv.Alias(stub, target + solid_target)
defenv.Alias('stubs', target + solid_target) defenv.Alias('stubs', target + solid_target)
defenv.Alias('install-stubs', ins_target + ins_solid_target)
uninst_icon = defenv.InstallAs('$PREFIX/Stubs/uninst', 'Source/exehead/uninst.ico') defenv.DistributeAs('Stubs/uninst', 'Source/exehead/uninst.ico')
defenv.Alias('install-stubs', uninst_icon)
###################################################################### ######################################################################
####### makensis ### ####### makensis ###
@ -151,16 +204,17 @@ makensis_env.SideEffect('%s/makensis.map' % build_dir, makensis)
defenv.Alias('makensis', makensis) defenv.Alias('makensis', makensis)
ins = defenv.Install('$PREFIX', makensis) ins = defenv.Distribute('', makensis)
defenv.Alias('install-compiler', ins) defenv.Alias('install-compiler', ins)
###################################################################### ######################################################################
####### Plug-ins ### ####### Plug-ins ###
###################################################################### ######################################################################
def BuildPlugin(target, source, libs, entry = 'DllMain', res = None, def BuildPlugin(target, source, libs, examples = None, docs = None,
res_target = None, resources = None, defines = None, entry = 'DllMain', res = None, res_target = None,
flags = None, nodeflib = 1): resources = None, defines = None, flags = None,
nodeflib = 1):
env = plugin_env.Copy() env = plugin_env.Copy()
if defines: if defines:
@ -188,8 +242,12 @@ def BuildPlugin(target, source, libs, entry = 'DllMain', res = None,
env.Clean(plugin, File(target + '.map')) env.Clean(plugin, File(target + '.map'))
ins = env.Install('$PREFIX/Plugins', plugin) env.Distribute('Plugins', plugin)
defenv.Alias('install-plugins', ins)
if examples:
env.DistributeExamples(target, examples)
if docs:
env.DistributeDocs(target, docs)
for plugin in plugins: for plugin in plugins:
path = 'Contrib/' + plugin path = 'Contrib/' + plugin
@ -230,7 +288,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:
ins = env.Install('$PREFIX/%s' % install, util) ins = env.Distribute(install, util)
defenv.Alias('install-utils', ins) defenv.Alias('install-utils', ins)
for util in utils: for util in utils:
@ -266,3 +324,19 @@ defenv.SConscript(
dirs = 'Examples', dirs = 'Examples',
exports = {'env': defenv.Copy()} exports = {'env': defenv.Copy()}
) )
######################################################################
####### Includes ###
######################################################################
defenv.SConscript(
dirs = 'Include',
exports = {'env': defenv.Copy()}
)
######################################################################
####### Miscellaneous ###
######################################################################
for i in misc:
defenv.SConscript(dirs = 'Contrib/%s' % i)