diff options
-rw-r--r-- | dists/win32/scummvm.nsi | 104 | ||||
-rw-r--r-- | ports.mk | 10 |
2 files changed, 86 insertions, 28 deletions
diff --git a/dists/win32/scummvm.nsi b/dists/win32/scummvm.nsi index 50ccadaf74..c5b6100b88 100644 --- a/dists/win32/scummvm.nsi +++ b/dists/win32/scummvm.nsi @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -#!define _DEBUG +!define _DEBUG #!define _INCLUDE_DATA_FILES Name ScummVM @@ -31,8 +31,7 @@ Name ScummVM ######################################################################################### #!define top_srcdir "" -#!define build_dir "" -#!define text_dir "" +#!define staging_dir "" #!define ARCH "" ;(optional, defaults to win32) # Check parameters @@ -40,12 +39,8 @@ Name ScummVM !error "Top source folder has not been passed to command line!" !endif -!ifndef build_dir - !error "Build folder has not been passed to command line (this folder should contain the executable and linked DLLs)!" -!endif - -!ifndef text_dir - !error "Text folder has not been passed to command line (this folder should contain all the text files used by the installer)!" +!ifndef staging_dir + !error "Staging folder has not been passed to command line (this folder should contain the executable and linked DLLs)!" !endif !ifndef ARCH @@ -72,7 +67,7 @@ Name ScummVM ######################################################################################### # Installer configuration ######################################################################################### -OutFile ${build_dir}\scummvm-${VERSION}-${ARCH}.exe +OutFile ${staging_dir}\scummvm-${VERSION}-${ARCH}.exe InstallDir $PROGRAMFILES\ScummVM ; Default installation folder InstallDirRegKey HKCU "Software\ScummVM\ScummVM" "InstallPath" ; Get installation folder from registry if available ; The application name needs to be refered directly instead of through ${REGKEY} @@ -224,13 +219,26 @@ Section "ScummVM" SecMain SetOverwrite on # Text files - File /oname=AUTHORS.txt "${text_dir}\AUTHORS" - File /oname=COPYING.LGPL.txt "${text_dir}\COPYING.LGPL" - File /oname=COPYING.txt "${text_dir}\COPYING" - File /oname=COPYRIGHT.txt "${text_dir}\COPYRIGHT" - File /oname=NEWS.txt "${text_dir}\NEWS" - File /oname=README.txt "${text_dir}\README" - File /oname=README-SDL.txt "${build_dir}\README-SDL" + File /oname=AUTHORS.txt "${top_srcdir}\AUTHORS" + File /oname=COPYING.LGPL.txt "${top_srcdir}\COPYING.LGPL" + File /oname=COPYING.txt "${top_srcdir}\COPYING" + File /oname=COPYRIGHT.txt "${top_srcdir}\COPYRIGHT" + File /oname=NEWS.txt "${top_srcdir}\NEWS" + File /oname=README.txt "${top_srcdir}\README" + + # Convert line endings + Push "$INSTDIR\AUTHORS.txt" + Call unix2dos + Push "$INSTDIR\COPYING.LGPL.txt" + Call unix2dos + Push "$INSTDIR\COPYING.txt" + Call unix2dos + Push "$INSTDIR\COPYRIGHT.txt" + Call unix2dos + Push "$INSTDIR\NEWS.txt" + Call unix2dos + Push "$INSTDIR\README.txt" + Call unix2dos !ifdef _INCLUDE_DATA_FILES # Engine data @@ -253,8 +261,8 @@ Section "ScummVM" SecMain !endif # Main exe and dlls - File "${build_dir}\scummvm.exe" - File "${build_dir}\SDL.dll" + File "${staging_dir}\scummvm.exe" + File "${staging_dir}\SDL.dll" WriteRegStr HKCU "${REGKEY}" InstallPath "$INSTDIR" ; Store installation folder SectionEnd @@ -354,3 +362,61 @@ Function un.onInit ReadRegStr $INSTDIR HKCU "${REGKEY}" InstallPath !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup FunctionEnd + + +######################################################################################### +# Helper functions +######################################################################################### + +;------------------------------------------------------------------------------- +; strips all CRs and then converts all LFs into CRLFs +; (this is roughly equivalent to "cat file | dos2unix | unix2dos") +; +; Usage: +; Push "infile" +; Call unix2dos +; +; Note: this function destroys $0 $1 $2 +Function unix2dos + ClearErrors + + Pop $2 + Rename $2 $2.U2D + FileOpen $1 $2 w + + FileOpen $0 $2.U2D r + + Push $2 ; save name for deleting + + IfErrors unix2dos_done + + ; $0 = file input (opened for reading) + ; $1 = file output (opened for writing) + +unix2dos_loop: + ; read a byte (stored in $2) + FileReadByte $0 $2 + IfErrors unix2dos_done ; EOL + ; skip CR + StrCmp $2 13 unix2dos_loop + ; if LF write an extra CR + StrCmp $2 10 unix2dos_cr unix2dos_write + +unix2dos_cr: + FileWriteByte $1 13 + +unix2dos_write: + ; write byte + FileWriteByte $1 $2 + ; read next byte + Goto unix2dos_loop + +unix2dos_done: + ; close files + FileClose $0 + FileClose $1 + + ; delete original + Pop $0 + Delete $0.U2D +FunctionEnd @@ -187,17 +187,9 @@ endif # Special target to create a win32 NSIS installer win32setup: $(EXECUTABLE) mkdir -p $(srcdir)/$(STAGINGPATH) - cp $(srcdir)/AUTHORS $(srcdir)/$(STAGINGPATH) - cp $(srcdir)/COPYING $(srcdir)/$(STAGINGPATH) - cp $(srcdir)/COPYING.LGPL $(srcdir)/$(STAGINGPATH) - cp $(srcdir)/COPYRIGHT $(srcdir)/$(STAGINGPATH) - cp $(srcdir)/NEWS $(srcdir)/$(STAGINGPATH) - cp $(srcdir)/README $(srcdir)/$(STAGINGPATH) - cp /usr/local/README-SDL.txt $(srcdir)/$(STAGINGPATH)/README-SDL - unix2dos $(srcdir)/$(STAGINGPATH)/*.* $(STRIP) $(EXECUTABLE) -o $(srcdir)/$(STAGINGPATH)/$(EXECUTABLE) cp /usr/local/bin/SDL.dll $(srcdir)/$(STAGINGPATH) - makensis -V2 -Dtop_srcdir="../.." -Dtext_dir="../../$(STAGINGPATH)" -Dbuild_dir="../../$(STAGINGPATH)" $(srcdir)/dists/win32/scummvm.nsi + makensis -V2 -Dtop_srcdir="../.." -Dstaging_dir="../../$(STAGINGPATH)" $(srcdir)/dists/win32/scummvm.nsi # # AmigaOS specific |