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
""")
examples = Split("""
Example.nsi
""")
docs = Split("""
advsplash.txt
""")
Import('BuildPlugin')
BuildPlugin(target, files, libs)
BuildPlugin(target, files, libs, examples, docs)

View file

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

View file

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

View file

@ -9,6 +9,10 @@ libs = Split("""
wininet
""")
docs = Split("""
Dialer.txt
""")
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
""")
examples = Split("""
test.nsi
test.ini
testimgs.nsi
testimgs.ini
testlink.nsi
testlink.ini
testnotify.nsi
testnotify.ini
""")
docs = Split("""
Readme.html
""")
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
""")
examples = Split("""
math.nsi
mathtest.nsi
mathtest.ini
mathtest.txt
""")
docs = Split("""
Math.txt
""")
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
""")
docs = Split("""
ReadMe.txt
""")
Import('BuildPlugin')
BuildPlugin(target, files, libs)
BuildPlugin(target, files, libs, docs = docs)

View file

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

View file

@ -15,7 +15,14 @@ libs = Split("""
shell32
""")
examples = Split("""
Example.nsi
""")
docs = Split("""
Readme.txt
""")
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
""")
examples = Split("""
System.nsi
System.nsh
SysFunc.nsh
""")
docs = Split("""
System.html
WhatsNew.txt
""")
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
""")
examples = Split("""
UserInfo.nsi
""")
Import('BuildPlugin')
BuildPlugin(target, files, libs)
BuildPlugin(target, files, libs, examples)

View file

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

View file

@ -28,6 +28,14 @@ libs = Split("""
shell32
""")
Import('BuildUtil')
headers = Split("""
Base.nsh
Classic.nsh
Modern.nsh
""")
Import('BuildUtil defenv')
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)
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/MultiLanguage.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')
env.Install('$PREFIX/Examples', examples)
env.Install('$PREFIX/Examples/Modern UI', mui_examples)
env.Alias('install-examples', '$PREFIX/Examples')
env.DistributeExamples('', examples)
env.DistributeExamples('Modern UI', mui_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
#
# * VPatch GenPat (wait for v3 written in C)
# * VPatch GenPat & distribution
# * Write SConscript for NSIS Menu
# - Use inheritance instead of current wxWidgets patches
# - Compile for POSIX too? wxWidgets is cross platform after all...
@ -8,6 +8,8 @@
#
##
VERSION = '2.06'
stubs = [
'bzip2',
'lzma',
@ -42,17 +44,23 @@ utils = [
'zip2exe'
]
import os
misc = [
'Graphics',
'Language files',
'Modern UI',
'UIs'
]
defenv = Environment()
defenv.SConsignFile()
Export('defenv')
######################################################################
####### options ###
####### 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(BoolOption('MSTOOLKIT', 'Use Microsoft Visual C++ Toolkit', 'no'))
opts.Add(BoolOption('DEBUG', 'Build executables with debugging information', 'no'))
@ -62,6 +70,45 @@ opts.Update(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']:
defenv.Replace(BUILD_PREFIX = 'build/debug')
else:
@ -70,9 +117,7 @@ else:
if defenv['MSTOOLKIT']:
defenv.Tool('mstoolkit', toolpath = ['SCons/Tools'])
######################################################################
####### environments ###
######################################################################
Default(defenv['BUILD_PREFIX'])
tools = defenv['TOOLS']
@ -91,21 +136,31 @@ plugin_env = envs[2]
util_env = envs[3]
######################################################################
####### aliases ###
####### Aliases ###
######################################################################
defenv.Alias('install', '$PREFIX')
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:
# install-compiler
# install-stubs
# install-plugins
# 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:
@ -117,7 +172,7 @@ for stub in stubs:
target = defenv.SConscript(dirs = 'Source/exehead', build_dir = build_dir, duplicate = 0, exports = exports)
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
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)
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('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.Alias('install-stubs', uninst_icon)
defenv.DistributeAs('Stubs/uninst', 'Source/exehead/uninst.ico')
######################################################################
####### makensis ###
@ -151,16 +204,17 @@ makensis_env.SideEffect('%s/makensis.map' % build_dir, makensis)
defenv.Alias('makensis', makensis)
ins = defenv.Install('$PREFIX', makensis)
ins = defenv.Distribute('', makensis)
defenv.Alias('install-compiler', ins)
######################################################################
####### Plug-ins ###
######################################################################
def BuildPlugin(target, source, libs, entry = 'DllMain', res = None,
res_target = None, resources = None, defines = None,
flags = None, nodeflib = 1):
def BuildPlugin(target, source, libs, examples = None, docs = None,
entry = 'DllMain', res = None, res_target = None,
resources = None, defines = None, flags = None,
nodeflib = 1):
env = plugin_env.Copy()
if defines:
@ -188,8 +242,12 @@ def BuildPlugin(target, source, libs, entry = 'DllMain', res = None,
env.Clean(plugin, File(target + '.map'))
ins = env.Install('$PREFIX/Plugins', plugin)
defenv.Alias('install-plugins', ins)
env.Distribute('Plugins', plugin)
if examples:
env.DistributeExamples(target, examples)
if docs:
env.DistributeDocs(target, docs)
for plugin in plugins:
path = 'Contrib/' + plugin
@ -230,7 +288,7 @@ def BuildUtil(target, source, libs, entry = None, res = None,
env.Clean(util, File(target + '.map'))
if install is not None:
ins = env.Install('$PREFIX/%s' % install, util)
ins = env.Distribute(install, util)
defenv.Alias('install-utils', ins)
for util in utils:
@ -266,3 +324,19 @@ defenv.SConscript(
dirs = 'Examples',
exports = {'env': defenv.Copy()}
)
######################################################################
####### Includes ###
######################################################################
defenv.SConscript(
dirs = 'Include',
exports = {'env': defenv.Copy()}
)
######################################################################
####### Miscellaneous ###
######################################################################
for i in misc:
defenv.SConscript(dirs = 'Contrib/%s' % i)