* Revamped build system - should make it a lot easier for people to build the sources and create packages

** Use "make -f Makefile help" to see a list of targets
** Updated Windows NSIS Packager rules
** Minor Tweaks to Debian rules

* Updated SpiderMonkey from 1.7 pre-release to 1.7 (minor changes only)
** Supplied new js32.dll for Windows (built with MSVC)

git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1857 127b21dd-08f5-0310-b4b7-95ae10353056
master
Michael Werle 2008-11-15 09:54:01 +00:00
parent dd1ac56784
commit ceb2b2e302
9 changed files with 273 additions and 190 deletions

View File

@ -1,32 +1,40 @@
include $(GNUSTEP_MAKEFILES)/common.make
CP = cp
BUILD_WITH_DEBUG_FUNCTIONALITY = yes
vpath %.m src/SDL:src/Core:src/Core/Entities:src/Core/Materials:src/Core/Scripting:src/Core/OXPVerifier:src/Core/Debug
vpath %.h src/SDL:src/Core:src/Core/Entities:src/Core/Materials:src/Core/Scripting:src/Core/OXPVerifier:src/Core/Debug
vpath %.c src/SDL:src/Core:src/BSDCompat:src/Core/Debug
GNUSTEP_INSTALLATION_DIR = $(GNUSTEP_USER_ROOT)
ifeq ($(GNUSTEP_HOST_OS),mingw32)
ADDITIONAL_INCLUDE_DIRS = -Ideps/Windows-x86-deps/include -Isrc/SDL -Isrc/Core -Isrc/BSDCompat -Isrc/Core/Scripting -Isrc/Core/Materials -Isrc/Core/Entities -Isrc/Core/OXPVerifier -Isrc/Core/Debug
ADDITIONAL_OBJC_LIBS = -lglu32 -lopengl32 -lpng13 -lmingw32 -lSDLmain -lSDL -lSDL_mixer -lgnustep-base -ljs32
ADDITIONAL_CFLAGS = -DWIN32 -DDOCKING_CLEARANCE_ENABLED -DNEED_STRLCPY `sdl-config --cflags`
# note the vpath stuff above isn't working for me, so adding src/SDL and src/Core explicitly
ADDITIONAL_OBJCFLAGS = -DLOADSAVEGUI -DWIN32 -DXP_WIN -DDOCKING_CLEARANCE_ENABLED -Wno-import `sdl-config --cflags`
ifeq ($(BUILD_WITH_DEBUG_FUNCTIONALITY),no)
ADDITIONAL_CFLAGS += -DNDEBUG
ADDITIONAL_OBJCFLAGS += -DNDEBUG
endif
oolite_LIB_DIRS += -L/usr/local/lib -L$(GNUSTEP_LOCAL_ROOT)/lib -Ldeps/Windows-x86-deps/lib
else
ADDITIONAL_INCLUDE_DIRS = -Ideps/Cross-platform-deps/SpiderMonkey/js/src -Ideps/Cross-platform-deps/SpiderMonkey/js/src/Linux_All_DBG.OBJ -Isrc/SDL -Isrc/Core -Isrc/BSDCompat -Isrc/Core/Scripting -Isrc/Core/Materials -Isrc/Core/Entities -Isrc/Core/OXPVerifier -Isrc/Core/Debug
ADDITIONAL_OBJC_LIBS = -lpng -ljs -lGLU -lGL -lSDL -lpthread -lSDL_mixer -lgnustep-base
ADDITIONAL_CFLAGS = -DLINUX -DDOCKING_CLEARANCE_ENABLED -DNEED_STRLCPY `sdl-config --cflags`
ADDITIONAL_OBJCFLAGS = -std=c99 -DLOADSAVEGUI -DLINUX -DDOCKING_CLEARANCE_ENABLED -DXP_UNIX -Wno-import `sdl-config --cflags`
oolite_LIB_DIRS += -Ldeps/Cross-platform-deps/SpiderMonkey/js/src/Linux_All_DBG.OBJ -L/usr/X11R6/lib/
endif
OBJC_PROGRAM_NAME = oolite
oolite_C_FILES = legacy_random.c strlcpy.c OOTCPStreamDecoder.c
oolite_OBJC_FILES = OOCocoa.m Comparison.m AI.m DustEntity.m Entity.m GameController.m GuiDisplayGen.m HeadUpDisplay.m main.m MyOpenGLView.m OpenGLSprite.m ParticleEntity.m PlanetEntity.m PlayerEntityLegacyScriptEngine.m PlayerEntityContracts.m PlayerEntityControls.m PlayerEntityLoadSave.m PlayerEntitySound.m PlayerEntity.m ResourceManager.m RingEntity.m ShipEntityAI.m ShipEntity.m SkyEntity.m StationEntity.m Universe.m NSFileManagerOOExtensions.m JoystickHandler.m PlayerEntityStickMapper.m OOCharacter.m OOTrumble.m WormholeEntity.m NSScannerOOExtensions.m OOXMLExtensions.m NSMutableDictionaryOOExtensions.m Geometry.m Octree.m CollisionRegion.m OOColor.m OOLogging.m OOCacheManager.m OOCache.m OOStringParsing.m OOCollectionExtractors.m OOVector.m OOMatrix.m OOQuaternion.m OOVoxel.m OOTriangle.m OOPListParsing.m OOFastArithmetic.m OOTextureScaling.m OOConstToString.m OOScript.m OOJSScript.m OOJavaScriptEngine.m OOPListScript.m NSStringOOExtensions.m PlayerEntityScriptMethods.m OOWeakReference.m OOJSEntity.m EntityOOJavaScriptExtensions.m OOJSQuaternion.m OOMaterial.m OOShaderMaterial.m OOShaderProgram.m OOShaderUniform.m OOTexture.m OONullTexture.m OOTextureLoader.m OOPNGTextureLoader.m OOOpenGLExtensionManager.m OOBasicMaterial.m OOSingleTextureMaterial.m OOCPUInfo.m OOSelfDrawingEntity.m OOEntityWithDrawable.m OODrawable.m OOJSVector.m OOMesh.m OOOpenGL.m OOGraphicsResetManager.m OOProbabilisticTextureManager.m OODebugGLDrawing.m OOShaderUniformMethodType.m OOAsyncQueue.m TextureStore.m OOOXPVerifier.m OOOXPVerifierStage.m OOFileScannerVerifierStage.m OOCheckRequiresPListVerifierStage.m OOCheckDemoShipsPListVerifierStage.m OOCheckEquipmentPListVerifierStage.m OOTextureVerifierStage.m OOModelVerifierStage.m OOCheckShipDataPListVerifierStage.m OOPListSchemaVerifier.m OOJSShip.m OOJSPlayer.m OOJSCall.m OOJSStation.m OOJSSystem.m OOLegacyEventHandlerScript.m OOJSOolite.m OORoleSet.m OOJSGlobal.m OOJSMissionVariables.m OOJSMission.m OOPriorityQueue.m OOScriptTimer.m OOJSTimer.m OOJSClock.m OODebugSupport.m OODebugMonitor.m OOJSConsole.m OODebugTCPConsoleClient.m OOTCPStreamDecoderAbstractionLayer.m OOEntityFilterPredicate.m OOJSPlanet.m OOJSWorldScripts.m OOJSSun.m NSThreadOOExtensions.m OOEncodingConverter.m OOJSSound.m OOJSSoundSource.m OOMusicController.m OOLogHeader.m OOJSSpecialFunctions.m OOSpatialReference.m OOSkyDrawable.m OOFilteringEnumerator.m OOSoundSourcePool.m ShipEntityScriptMethods.m OOShipRegistry.m OOProbabilitySet.m OOJSSystemInfo.m NSDictionaryOOExtensions.m OOEquipmentType.m OOCamera.m OOJSPlayerShip.m OOSDLSound.m OOSDLConcreteSound.m OOSoundSource.m OOSDLSoundMixer.m OOSDLSoundChannel.m OOBasicSoundReferencePoint.m SDLMusic.m OOLogOutputHandler.m OOJSEquipmentInfo.m OOIsNumberLiteral.m
include $(GNUSTEP_MAKEFILES)/objc.make
include GNUmakefile.postamble
include $(GNUSTEP_MAKEFILES)/common.make
CP = cp
BUILD_WITH_DEBUG_FUNCTIONALITY = yes
vpath %.m src/SDL:src/Core:src/Core/Entities:src/Core/Materials:src/Core/Scripting:src/Core/OXPVerifier:src/Core/Debug
vpath %.h src/SDL:src/Core:src/Core/Entities:src/Core/Materials:src/Core/Scripting:src/Core/OXPVerifier:src/Core/Debug
vpath %.c src/SDL:src/Core:src/BSDCompat:src/Core/Debug
GNUSTEP_INSTALLATION_DIR = $(GNUSTEP_USER_ROOT)
ifeq ($(GNUSTEP_HOST_OS),mingw32)
ADDITIONAL_INCLUDE_DIRS = -Ideps/Windows-x86-deps/include -Isrc/SDL -Isrc/Core -Isrc/BSDCompat -Isrc/Core/Scripting -Isrc/Core/Materials -Isrc/Core/Entities -Isrc/Core/OXPVerifier -Isrc/Core/Debug
ADDITIONAL_OBJC_LIBS = -lglu32 -lopengl32 -lpng13 -lmingw32 -lSDLmain -lSDL -lSDL_mixer -lgnustep-base -ljs32
ADDITIONAL_CFLAGS = -DWIN32 -DDOCKING_CLEARANCE_ENABLED -DNEED_STRLCPY `sdl-config --cflags`
# note the vpath stuff above isn't working for me, so adding src/SDL and src/Core explicitly
ADDITIONAL_OBJCFLAGS = -DLOADSAVEGUI -DWIN32 -DXP_WIN -DDOCKING_CLEARANCE_ENABLED -Wno-import `sdl-config --cflags`
oolite_LIB_DIRS += -L/usr/local/lib -L$(GNUSTEP_LOCAL_ROOT)/lib -Ldeps/Windows-x86-deps/lib
else
LIBJS_SRC_DIR = deps/Cross-platform-deps/SpiderMonkey/js/src
LIBJS_BIN_DIR = $(LIBJS_SRC_DIR)/Linux_All_OPT.OBJ
ADDITIONAL_INCLUDE_DIRS = -I$(LIBJS_SRC_DIR) -I$(LIBJS_BIN_DIR) -Isrc/SDL -Isrc/Core -Isrc/BSDCompat -Isrc/Core/Scripting -Isrc/Core/Materials -Isrc/Core/Entities -Isrc/Core/OXPVerifier -Isrc/Core/Debug
ADDITIONAL_OBJC_LIBS = -lpng $(LIBJS_BIN_DIR)/libjs.a -lGLU -lGL -lSDL -lSDL_mixer -lgnustep-base
ADDITIONAL_CFLAGS = -DLINUX -DDOCKING_CLEARANCE_ENABLED -DNEED_STRLCPY `sdl-config --cflags`
ADDITIONAL_OBJCFLAGS = -std=c99 -DLOADSAVEGUI -DLINUX -DDOCKING_CLEARANCE_ENABLED -DXP_UNIX -Wno-import `sdl-config --cflags`
oolite_LIB_DIRS += -L/usr/X11R6/lib/
endif
ifeq ($(debug),yes)
ADDITIONAL_CFLAGS += -g -O0
ADDITIONAL_OBJCFLAGS += -g -O0
GNUSTEP_OBJ_DIR_NAME := $(GNUSTEP_OBJ_DIR_NAME).dbg
endif
ifeq ($(BUILD_WITH_DEBUG_FUNCTIONALITY),no)
ADDITIONAL_CFLAGS += -DNDEBUG
ADDITIONAL_OBJCFLAGS += -DNDEBUG
endif
OBJC_PROGRAM_NAME = oolite
oolite_C_FILES = legacy_random.c strlcpy.c OOTCPStreamDecoder.c
oolite_OBJC_FILES = OOCocoa.m Comparison.m AI.m DustEntity.m Entity.m GameController.m GuiDisplayGen.m HeadUpDisplay.m main.m MyOpenGLView.m OpenGLSprite.m ParticleEntity.m PlanetEntity.m PlayerEntityLegacyScriptEngine.m PlayerEntityContracts.m PlayerEntityControls.m PlayerEntityLoadSave.m PlayerEntitySound.m PlayerEntity.m ResourceManager.m RingEntity.m ShipEntityAI.m ShipEntity.m SkyEntity.m StationEntity.m Universe.m NSFileManagerOOExtensions.m JoystickHandler.m PlayerEntityStickMapper.m OOCharacter.m OOTrumble.m WormholeEntity.m NSScannerOOExtensions.m OOXMLExtensions.m NSMutableDictionaryOOExtensions.m Geometry.m Octree.m CollisionRegion.m OOColor.m OOLogging.m OOCacheManager.m OOCache.m OOStringParsing.m OOCollectionExtractors.m OOVector.m OOMatrix.m OOQuaternion.m OOVoxel.m OOTriangle.m OOPListParsing.m OOFastArithmetic.m OOTextureScaling.m OOConstToString.m OOScript.m OOJSScript.m OOJavaScriptEngine.m OOPListScript.m NSStringOOExtensions.m PlayerEntityScriptMethods.m OOWeakReference.m OOJSEntity.m EntityOOJavaScriptExtensions.m OOJSQuaternion.m OOMaterial.m OOShaderMaterial.m OOShaderProgram.m OOShaderUniform.m OOTexture.m OONullTexture.m OOTextureLoader.m OOPNGTextureLoader.m OOOpenGLExtensionManager.m OOBasicMaterial.m OOSingleTextureMaterial.m OOCPUInfo.m OOSelfDrawingEntity.m OOEntityWithDrawable.m OODrawable.m OOJSVector.m OOMesh.m OOOpenGL.m OOGraphicsResetManager.m OOProbabilisticTextureManager.m OODebugGLDrawing.m OOShaderUniformMethodType.m OOAsyncQueue.m TextureStore.m OOOXPVerifier.m OOOXPVerifierStage.m OOFileScannerVerifierStage.m OOCheckRequiresPListVerifierStage.m OOCheckDemoShipsPListVerifierStage.m OOCheckEquipmentPListVerifierStage.m OOTextureVerifierStage.m OOModelVerifierStage.m OOCheckShipDataPListVerifierStage.m OOPListSchemaVerifier.m OOJSShip.m OOJSPlayer.m OOJSCall.m OOJSStation.m OOJSSystem.m OOLegacyEventHandlerScript.m OOJSOolite.m OORoleSet.m OOJSGlobal.m OOJSMissionVariables.m OOJSMission.m OOPriorityQueue.m OOScriptTimer.m OOJSTimer.m OOJSClock.m OODebugSupport.m OODebugMonitor.m OOJSConsole.m OODebugTCPConsoleClient.m OOTCPStreamDecoderAbstractionLayer.m OOEntityFilterPredicate.m OOJSPlanet.m OOJSWorldScripts.m OOJSSun.m NSThreadOOExtensions.m OOEncodingConverter.m OOJSSound.m OOJSSoundSource.m OOMusicController.m OOLogHeader.m OOJSSpecialFunctions.m OOSpatialReference.m OOSkyDrawable.m OOFilteringEnumerator.m OOSoundSourcePool.m ShipEntityScriptMethods.m OOShipRegistry.m OOProbabilitySet.m OOJSSystemInfo.m NSDictionaryOOExtensions.m OOEquipmentType.m OOCamera.m OOJSPlayerShip.m OOSDLSound.m OOSDLConcreteSound.m OOSoundSource.m OOSDLSoundMixer.m OOSDLSoundChannel.m OOBasicSoundReferencePoint.m SDLMusic.m OOLogOutputHandler.m OOJSEquipmentInfo.m OOIsNumberLiteral.m
include $(GNUSTEP_MAKEFILES)/objc.make
include GNUmakefile.postamble

View File

@ -1,36 +1,33 @@
# Oolite-linux
# GNUmakefile.postamble: Runs after-compilation scripts.
# These copy all the base data files into where oolite expects them
# to live (Contents/Resources)
#
ifeq ($(debug),yes)
EXTENSION=debug
else
EXTENSION=app
endif
ifeq ($(GNUSTEP_HOST_OS),mingw32)
BINARY=$(OBJC_PROGRAM_NAME).exe
else
BINARY=$(OBJC_PROGRAM_NAME)
endif
PROGDIR=$(OBJC_PROGRAM_NAME).$(EXTENSION)
GNUSTEP_OW=$(OBJC_PROGRAM_NAME).$(EXTENSION)/Resources/Info-gnustep.plist
after-all::
rm -rf $(PROGDIR)
$(MKDIRS) $(PROGDIR)
$(MKDIRS) $(PROGDIR)/Resources
$(CP) -r Resources $(PROGDIR)
$(CP) -r Schemata $(PROGDIR)/Resources
$(CP) src/Cocoa/Info-Oolite.plist $(GNUSTEP_OW)
if test -d obj; then \
$(CP) obj/$(BINARY) $(PROGDIR); \
else \
if test -d shared_debug_obj; then \
$(CP) shared_debug_obj/$(BINARY) $(PROGDIR); \
else \
$(CP) shared_obj/$(BINARY) $(PROGDIR); \
fi; \
fi;
# Oolite-linux
# GNUmakefile.postamble: Runs after-compilation scripts.
# These copy all the base data files into where oolite expects them
# to live (Contents/Resources)
#
ifeq ($(debug),yes)
EXT=.dbg
endif
ifeq ($(GNUSTEP_HOST_OS),mingw32)
OS_EXT=.exe
endif
SRC_BIN=$(OBJC_PROGRAM_NAME)$(OS_EXT)
DEST_BIN=$(OBJC_PROGRAM_NAME)$(EXT)$(OS_EXT)
PROGDIR=$(OBJC_PROGRAM_NAME).app
after-all::
$(MKDIRS) $(PROGDIR)
$(MKDIRS) $(PROGDIR)/Resources
$(CP) -r -u -f Resources $(PROGDIR)
$(CP) -r -u -f Schemata $(PROGDIR)/Resources
$(CP) -u -f src/Cocoa/Info-Oolite.plist $(PROGDIR)/Resources/Info-gnustep.plist
$(CP) -u -f $(GNUSTEP_OBJ_DIR_NAME)/$(SRC_BIN) $(PROGDIR)/$(DEST_BIN)
ifeq ($(debug),no)
strip $(PROGDIR)/$(DEST_BIN)
endif
ifeq ($(GNUSTEP_HOST_OS),mingw32)
$(CP) -r -u -f deps/Windows-x86-deps/DLLs/*.dll $(PROGDIR)
endif
after-clean::
rm -rf $(GNUSTEP_OBJ_DIR_NAME)

73
Makefile Normal file
View File

@ -0,0 +1,73 @@
LIBJS_SRC_DIR=deps/Cross-platform-deps/SpiderMonkey/js/src
ifeq ($(GNUSTEP_HOST_OS),mingw32)
LIBJS=deps/Windows-x86-deps/DLLs/js32.dll
endif
ifeq ($(GNUSTEP_HOST_OS),linux-gnu)
# Set up GNU make environment
GNUSTEP_MAKEFILES=/usr/share/GNUstep/Makefiles
# These are the paths for our custom-built Javascript library
LIBJS_INC_DIR=$(LIBJS_SRC_DIR)
LIBJS_BIN_DIR=$(LIBJS_SRC_DIR)/Linux_All_OPT.OBJ
LIBJS=$(LIBJS_BIN_DIR)/libjs.a
endif
DEPS=$(LIBJS)
# Here are our default targets
#
release: $(DEPS)
make -f GNUmakefile debug=no
debug: $(DEPS)
make -f GNUmakefile debug=yes
$(LIBJS):
ifeq ($(GNUSTEP_HOST_OS),mingw32)
@echo "ERROR - this Makefile can't (yet) build the Javascript DLL"
@echo " Please build it yourself and copy it to $(LIBJS)."
false
endif
make -C $(LIBJS_SRC_DIR) -f Makefile.ref BUILD_OPT=1
clean:
ifneq ($(GNUSTEP_HOST_OS),mingw32)
make -C $(LIBJS_SRC_DIR)/editline -f Makefile.ref clobber
make -C $(LIBJS_SRC_DIR) -f Makefile.ref clobber
find $(LIBJS_SRC_DIR) -name "Linux_All_*.OBJ" | xargs rm -Rf
endif
make -f GNUmakefile clean
rm -Rf obj obj.dbg oolite.app
all: release debug
remake: clean all
# Here are our Debian packager targets
#
pkg-deb:
debuild binary
pkg-debclean:
debuild clean
# And here are our Windows packager targets
#
NSIS="C:\Program Files\NSIS\makensis.exe"
NSIS_ARGS=-V1 -DVER=1.73-dev
pkg-win: release
$(NSIS) $(NSIS_ARGS) installers/win32/OOlite.nsi
help:
@echo "Use this Makefile to build Oolite:"
@echo " release - builds a release executable in oolite.app/oolite"
@echo " debug - builds a debug executable in oolite.app/oolite.dbg"
@echo " all - builds the above two targets"
@echo " clean - removes all generated files"
@echo
@echo " pkg-deb - builds a Debian package"
@echo " pkg-debclean - cleans up after a Debian package build"
@echo
@echo " pkg-win - builds a Windows NSIS installer package"
.PHONY: all release debug clean remake pkg-deb pkg-debclean pkg-win help

View File

@ -1,5 +1,2 @@
#!/bin/sh
set -e
mkdir -p ~/.Oolite
cd ~/.Oolite
openapp oolite
#!/bin/sh
openapp oolite &

View File

@ -1,6 +1,6 @@
oolite.app/oolite usr/lib/GNUstep/Applications/oolite.app
oolite.app/Resources/Info-gnustep.plist usr/lib/GNUstep/Applications/oolite.app/Resources
debian/extra/DTDs usr/lib/GNUstep/Library
deps/Cross-platform-deps/DTDs usr/lib/GNUstep/Library
debian/extra/games/oolite /usr/games
FreeDesktop/oolite.desktop usr/share/applications
FreeDesktop/oolite-icon.png usr/share/icons

6
debian/rules vendored
View File

@ -34,8 +34,8 @@ unpatch:
build: patch build-stamp
build-stamp:
dh_testdir
$(MAKE) -C $(JS_SRC)/fdlibm -f Makefile.ref
$(MAKE) -C $(JS_SRC) -f Makefile.ref
$(MAKE) -C $(JS_SRC)/fdlibm -f Makefile.ref BUILD_OPT=1
$(MAKE) -C $(JS_SRC) -f Makefile.ref BUILD_OPT=1
$(GSMAKE)
touch $@
@ -48,7 +48,7 @@ clean-stamp:
$(MAKE) -C $(JS_SRC) -f Makefile.ref clean
rm -rf oolite.app oolite.debug
rm -f http+_www.apple.com_DTDs_PropertyList-1.0.dtd
find $(JS_SRC) -name Linux_All_DBG.OBJ | xargs -r rm -rf
find $(JS_SRC) -name Linux_All_OPT.OBJ | xargs -r rm -rf
dh_clean
install: build

View File

@ -1,12 +1,19 @@
!packhdr "Oolite.dat" "upx.exe --best Oolite.dat"
!ifndef VER
!error "VER not defined."
!endif
!ifndef DST
!define DST ..\..\oolite.app
!endif
;!packhdr "Oolite.dat" "upx.exe --best Oolite.dat"
SetCompress auto
SetCompressor LZMA
SetCompressorDictSize 32
SetDatablockOptimize on
OutFile "OoliteInstall-$%VER%.exe"
OutFile "..\..\..\OoliteInstall-${VER}.exe"
BrandingText "Oolite"
Name "Oolite"
Caption "Oolite $%VER%"
Caption "Oolite ${VER}"
SubCaption 0 " "
SubCaption 1 " "
SubCaption 2 " "
@ -29,83 +36,73 @@ FunctionEnd
Function un.RegSetup
FunctionEnd
;------------------------------------------------------------
; Installation Section
Section ""
SetOutPath $INSTDIR
; Package files
CreateDirectory "$INSTDIR\AddOns"
CreateDirectory "$INSTDIR\GNUstep\Library\DTDs"
File "Oolite.ico"
File "RunOolite.bat"
File "Oolite_Readme.txt"
File "OoliteRS.pdf"
File /r /x .svn /x *~ "${DST}"
SetOutPath $INSTDIR\GNUstep\Library\DTDs
File /r /x .svn /x *~ "..\..\deps\Cross-platform-deps\DTDs\*.*"
WriteRegStr HKLM Software\Oolite "Install_Dir" "$INSTDIR"
WriteRegStr HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\Oolite DisplayName "Oolite Package"
WriteRegStr HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\Oolite UninstallString '"$INSTDIR\UninstOolite.exe"'
WriteUninstaller "$INSTDIR\UninstOolite.exe"
; Registry entries
WriteRegStr HKLM Software\Oolite "Install_Dir" "$INSTDIR"
WriteRegStr HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\Oolite DisplayName "Oolite ${VER}"
WriteRegStr HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\Oolite UninstallString '"$INSTDIR\UninstOolite.exe"'
; Start Menu shortcuts
SetOutPath $INSTDIR
CreateDirectory "$SMPROGRAMS\Oolite"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite.lnk" "$INSTDIR\RunOolite.bat" "" "$INSTDIR\Oolite.ico"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite ReadMe.lnk" "$INSTDIR\Oolite_Readme.txt"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite reference sheet.lnk" "$INSTDIR\OoliteRS.pdf"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite website.lnk" "http://Oolite.aegidian.org/"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite Reference Sheet.lnk" "$INSTDIR\OoliteRS.pdf"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite Website.lnk" "http://Oolite.aegidian.org/"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite Uninstall.lnk" "$INSTDIR\UninstOolite.exe"
File "Oolite.ico"
File /r "$%DST%\*.*"
Call RegSetup
ClearErrors
FileOpen $0 $INSTDIR\RunOolite.bat w
IfErrors doneWriting
FileWrite $0 "@echo off"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set GNUSTEP_PATH_HANDLING=windows"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set GNUSTEP_LOCAL_ROOT=$INSTDIR\oolite.app"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set GNUSTEP_NETWORK_ROOT=$INSTDIR\oolite.app"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set GNUSTEP_SYSTEM_ROOT=$INSTDIR\oolite.app"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set HOMEPATH=$INSTDIR\oolite.app"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "oolite.app\oolite.exe"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileClose $0
doneWriting:
Exec "notepad.exe $INSTDIR/Oolite_Readme.txt"
Exec "notepad.exe $INSTDIR\Oolite_Readme.txt"
SectionEnd
;------------------------------------------------------------
; Uninstaller Section
Section "Uninstall"
; Remove registry entries
DeleteRegKey HKLM Software\Oolite
DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\Oolite
Call un.RegSetup
RMDir /r "$INSTDIR\oolite.app\Contents"
RMDir /r "$INSTDIR\oolite.app\GNUstep"
RMDir /r "$INSTDIR\oolite.app\Library"
RMDir /r "$INSTDIR\oolite.app\GNUstep"
RMDir /r "$INSTDIR\oolite.app\oolite.app"
RMDir /r "$INSTDIR\oolite.app\Resources"
RMDir /r "$INSTDIR\oolite.app\share"
Delete "$INSTDIR\*.*"
Delete "$INSTDIR\oolite.app\*.*"
; Remove Start Menu entries
RMDir /r "$SMPROGRAMS\Oolite"
; Remove Package files (but leave any generated content behind)
RMDir /r "$INSTDIR\oolite.app"
RMDir /r "$INSTDIR\Logs"
RMDir /r "$INSTDIR\GNUstep\Library\DTDs"
Delete "$INSTDIR\GNUstep\Library\Caches\Oolite-cache.plist"
RMDir "$INSTDIR\GNUstep\Library\Caches"
RMDir "$INSTDIR\GNUstep\Library"
RMDir "$INSTDIR\GNUstep"
RMDir "$INSTDIR\AddOns"
Delete "$INSTDIR\Oolite.ico"
Delete "$INSTDIR\RunOolite.bat"
Delete "$INSTDIR\Oolite_Readme.txt"
Delete "$INSTDIR\OoliteRS.pdf"
Delete "$INSTDIR\UninstOolite.exe"
RMDir "$INSTDIR"
SectionEnd

View File

@ -1,12 +1,22 @@
!ifndef VER
!error "VER not defined."
!endif
!ifndef SVNVER
!error "SVNVER not defined."
!endif
!ifndef DST
!define DST ..\..\oolite.app
!endif
;!packhdr "Oolite.dat" "upx.exe --best Oolite.dat"
SetCompress auto
SetCompressor LZMA
SetCompressorDictSize 32
SetDatablockOptimize on
AddBrandingImage top 57
OutFile "OoliteInstall-r$%SVNREV%.exe"
BrandingText "Oolite"
OutFile "..\..\..\OoliteInstall-v${VER}-r${SVNREV}.exe"
Name "Oolite"
Caption "Oolite v$%VER% SVN Revision $%SVNREV% Installer"
Caption "Oolite v${VER} SVN Revision ${SVNREV} Installer"
SubCaption 0 " "
SubCaption 1 " "
SubCaption 2 " "
@ -51,81 +61,73 @@ FunctionEnd
Function un.RegSetup
FunctionEnd
;------------------------------------------------------------
; Installation Section
Section ""
SetOutPath $INSTDIR
; Package files
CreateDirectory "$INSTDIR\AddOns"
CreateDirectory "$INSTDIR\GNUstep\Library\DTDs"
File "Oolite.ico"
File "RunOolite.bat"
File "Oolite_Readme.txt"
File "OoliteRS.pdf"
File /r /x .svn /x *~ "${DST}"
SetOutPath $INSTDIR\GNUstep\Library\DTDs
File /r /x .svn /x *~ "..\..\deps\Cross-platform-deps\DTDs\*.*"
WriteRegStr HKLM Software\Oolite "Install_Dir" "$INSTDIR"
WriteRegStr HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\Oolite DisplayName "Oolite Package"
WriteRegStr HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\Oolite UninstallString '"$INSTDIR\UninstOolite.exe"'
WriteUninstaller "$INSTDIR\UninstOolite.exe"
; Registry entries
WriteRegStr HKLM Software\Oolite "Install_Dir" "$INSTDIR"
WriteRegStr HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\Oolite DisplayName "Oolite ${VER}.r${SVNREV}"
WriteRegStr HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\Oolite UninstallString '"$INSTDIR\UninstOolite.exe"'
; Start Menu shortcuts
SetOutPath $INSTDIR
CreateDirectory "$SMPROGRAMS\Oolite"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite.lnk" "$INSTDIR\RunOolite.bat" "" "$INSTDIR\Oolite.ico"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite ReadMe.lnk" "$INSTDIR\Oolite_Readme.txt"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite reference sheet.lnk" "$INSTDIR\OoliteRS.pdf"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite website.lnk" "http://Oolite.aegidian.org/"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite Reference Sheet.lnk" "$INSTDIR\OoliteRS.pdf"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite Website.lnk" "http://Oolite.aegidian.org/"
CreateShortCut "$SMPROGRAMS\Oolite\Oolite Uninstall.lnk" "$INSTDIR\UninstOolite.exe"
File "Oolite.ico"
File /r "$%DST%\*.*"
Call RegSetup
ClearErrors
FileOpen $0 $INSTDIR\RunOolite.bat w
IfErrors doneWriting
FileWrite $0 "@echo off"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set GNUSTEP_PATH_HANDLING=windows"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set GNUSTEP_LOCAL_ROOT=$INSTDIR\oolite.app"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set GNUSTEP_NETWORK_ROOT=$INSTDIR\oolite.app"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set GNUSTEP_SYSTEM_ROOT=$INSTDIR\oolite.app"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set HOMEPATH=$INSTDIR\oolite.app"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "oolite.app\oolite.exe %1 %2 %3 %4"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileClose $0
doneWriting:
Exec "notepad.exe $INSTDIR/Oolite_Readme.txt"
Exec "notepad.exe $INSTDIR\Oolite_Readme.txt"
SectionEnd
;------------------------------------------------------------
; Uninstaller Section
Section "Uninstall"
; Remove registry entries
DeleteRegKey HKLM Software\Oolite
DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\Oolite
Call un.RegSetup
RMDir /r "$INSTDIR\oolite.app\Contents"
RMDir /r "$INSTDIR\oolite.app\GNUstep"
RMDir /r "$INSTDIR\oolite.app\GNUstep"
RMDir /r "$INSTDIR\oolite.app\oolite.app"
RMDir /r "$INSTDIR\oolite.app\Resources"
RMDir /r "$INSTDIR\oolite.app\share"
Delete "$INSTDIR\*.*"
Delete "$INSTDIR\oolite.app\*.*"
; Remove Start Menu entries
RMDir /r "$SMPROGRAMS\Oolite"
; Remove Package files (but leave any generated content behind)
RMDir /r "$INSTDIR\oolite.app"
RMDir /r "$INSTDIR\Logs"
RMDir /r "$INSTDIR\GNUstep\Library\DTDs"
Delete "$INSTDIR\GNUstep\Library\Caches\Oolite-cache.plist"
RMDir "$INSTDIR\GNUstep\Library\Caches"
RMDir "$INSTDIR\GNUstep\Library"
RMDir "$INSTDIR\GNUstep"
RMDir "$INSTDIR\AddOns"
Delete "$INSTDIR\Oolite.ico"
Delete "$INSTDIR\RunOolite.bat"
Delete "$INSTDIR\Oolite_Readme.txt"
Delete "$INSTDIR\OoliteRS.pdf"
Delete "$INSTDIR\UninstOolite.exe"
RMDir "$INSTDIR"
SectionEnd

View File

@ -0,0 +1,9 @@
@echo off
set BASE=%~dp0
set GNUSTEP_PATH_HANDLING=windows
set GNUSTEP_SYSTEM_ROOT=%BASE%
set GNUSTEP_LOCAL_ROOT=%BASE%
set GNUSTEP_NETWORK_ROOT=%BASE%
set GNUSTEP_USERS_ROOT=%BASE%
set HOMEPATH=%BASE%
"%BASE%\oolite.app\oolite.exe" %1 %2 %3 %4