diff mbox

[PULL,w32,01/01] w32, w64: Add build rule for installer

Message ID 1374989579-24933-2-git-send-email-sw@weilnetz.de
State Accepted
Headers show

Commit Message

Stefan Weil July 28, 2013, 5:32 a.m. UTC
The new rules in Makefile allow building installers for QEMU on Windows
using NSIS, a package which is also available for Linux distributions
(so cross builds are possible).

The rules for NSIS are in qemu.nsi which also uses two new images.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
 Makefile              |   55 +++++++++++
 pc-bios/qemu-nsis.bmp |  Bin 0 -> 154542 bytes
 pc-bios/qemu-nsis.ico |  Bin 0 -> 4846 bytes
 qemu.nsi              |  250 +++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 305 insertions(+)
 create mode 100644 pc-bios/qemu-nsis.bmp
 create mode 100644 pc-bios/qemu-nsis.ico
 create mode 100644 qemu.nsi
diff mbox

Patch

diff --git a/Makefile b/Makefile
index c06bfab..29f1043 100644
--- a/Makefile
+++ b/Makefile
@@ -437,6 +437,61 @@  qemu-doc.dvi qemu-doc.html qemu-doc.info qemu-doc.pdf: \
 	qemu-img.texi qemu-nbd.texi qemu-options.texi \
 	qemu-monitor.texi qemu-img-cmds.texi
 
+ifdef CONFIG_WIN32
+
+INSTALLER = qemu-setup-$(VERSION)$(EXESUF)
+
+nsisflags = -V2 -NOCD
+
+ifneq ($(wildcard $(SRC_PATH)/dll),)
+ifeq ($(ARCH),x86_64)
+# 64 bit executables
+DLL_PATH = $(SRC_PATH)/dll/w64
+nsisflags += -DW64
+else
+# 32 bit executables
+DLL_PATH = $(SRC_PATH)/dll/w32
+endif
+endif
+
+.PHONY: installer
+installer: $(INSTALLER)
+
+INSTDIR=/tmp/qemu-nsis
+
+$(INSTALLER): $(SRC_PATH)/qemu.nsi
+	make install prefix=${INSTDIR}
+ifdef SIGNCODE
+	(cd ${INSTDIR}; \
+         for i in *.exe; do \
+           $(SIGNCODE) $${i}; \
+         done \
+        )
+endif # SIGNCODE
+	(cd ${INSTDIR}; \
+         for i in qemu-system-*.exe; do \
+           arch=$${i%.exe}; \
+           arch=$${arch#qemu-system-}; \
+           echo Section \"$$arch\" Section_$$arch; \
+           echo SetOutPath \"\$$INSTDIR\"; \
+           echo File \"\$${BINDIR}\\$$i\"; \
+           echo SectionEnd; \
+         done \
+        ) >${INSTDIR}/system-emulations.nsh
+	makensis $(nsisflags) \
+                $(if $(BUILD_DOCS),-DCONFIG_DOCUMENTATION="y") \
+                $(if $(CONFIG_GTK),-DCONFIG_GTK="y") \
+                -DBINDIR="${INSTDIR}" \
+                $(if $(DLL_PATH),-DDLLDIR="$(DLL_PATH)") \
+                -DSRCDIR="$(SRC_PATH)" \
+                -DOUTFILE="$(INSTALLER)" \
+                $(SRC_PATH)/qemu.nsi
+	rm -r ${INSTDIR}
+ifdef SIGNCODE
+	$(SIGNCODE) $(INSTALLER)
+endif # SIGNCODE
+endif # CONFIG_WIN
+
 # Add a dependency on the generated files, so that they are always
 # rebuilt before other object files
 ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
diff --git a/pc-bios/qemu-nsis.bmp b/pc-bios/qemu-nsis.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..ae82cd2697ab688137c1758c724c2e2597cf8121
GIT binary patch
literal 154542
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

literal 0
HcmV?d00001

diff --git a/pc-bios/qemu-nsis.ico b/pc-bios/qemu-nsis.ico
new file mode 100644
index 0000000000000000000000000000000000000000..1d0128cd4c37f9c845f19c499febd61f85af5961
GIT binary patch
literal 4846
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
X6&Oj5#*Cyur7}_?l4W8%9QXeKCmz*e

literal 0
HcmV?d00001

diff --git a/qemu.nsi b/qemu.nsi
new file mode 100644
index 0000000..1d57455
--- /dev/null
+++ b/qemu.nsi
@@ -0,0 +1,250 @@ 
+;!/usr/bin/makensis
+
+; This NSIS script creates an installer for QEMU on Windows.
+
+; Copyright (C) 2006-2012 Stefan Weil
+;
+; This program is free software: you can redistribute it and/or modify
+; it under the terms of the GNU General Public License as published by
+; the Free Software Foundation, either version 2 of the License, or
+; (at your option) version 3 or any later version.
+;
+; This program is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+; GNU General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+; NSIS_WIN32_MAKENSIS
+
+!define PRODUCT "QEMU"
+!define URL     "http://www.qemu.org/"
+
+!define UNINST_EXE "$INSTDIR\qemu-uninstall.exe"
+!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}"
+
+!ifndef BINDIR
+!define BINDIR nsis.tmp
+!endif
+!ifndef SRCDIR
+!define SRCDIR .
+!endif
+!ifndef OUTFILE
+!define OUTFILE "qemu-setup.exe"
+!endif
+
+; Optionally install documentation.
+!ifndef CONFIG_DOCUMENTATION
+!define CONFIG_DOCUMENTATION
+!endif
+
+; Use maximum compression.
+SetCompressor /SOLID lzma
+
+!include "MUI2.nsh"
+
+; The name of the installer.
+Name "QEMU"
+
+; The file to write
+OutFile "${OUTFILE}"
+
+; The default installation directory.
+!ifdef W64
+InstallDir $PROGRAMFILES64\qemu
+!else
+InstallDir $PROGRAMFILES\qemu
+!endif
+
+; Registry key to check for directory (so if you install again, it will
+; overwrite the old one automatically)
+InstallDirRegKey HKLM "Software\qemu" "Install_Dir"
+
+; Request administrator privileges for Windows Vista.
+RequestExecutionLevel admin
+
+;--------------------------------
+; Interface Settings.
+;!define MUI_HEADERIMAGE "qemu-nsis.bmp"
+; !define MUI_SPECIALBITMAP "qemu.bmp"
+!define MUI_ICON "${SRCDIR}\pc-bios\qemu-nsis.ico"
+!define MUI_UNICON "${SRCDIR}\pc-bios\qemu-nsis.ico"
+!define MUI_WELCOMEFINISHPAGE_BITMAP "${SRCDIR}\pc-bios\qemu-nsis.bmp"
+; !define MUI_HEADERIMAGE_BITMAP "qemu-install.bmp"
+; !define MUI_HEADERIMAGE_UNBITMAP "qemu-uninstall.bmp"
+; !define MUI_COMPONENTSPAGE_SMALLDESC
+; !define MUI_WELCOMEPAGE_TEXT "Insert text here.$\r$\n$\r$\n$\r$\n$_CLICK"
+
+;--------------------------------
+; Pages.
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "${SRCDIR}\COPYING"
+!insertmacro MUI_PAGE_COMPONENTS
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!define MUI_FINISHPAGE_LINK "Visit the QEMU Wiki online!"
+!define MUI_FINISHPAGE_LINK_LOCATION "${URL}"
+!insertmacro MUI_PAGE_FINISH
+
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+
+;--------------------------------
+; Languages.
+
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_LANGUAGE "French"
+!insertmacro MUI_LANGUAGE "German"
+
+;--------------------------------
+
+; The stuff to install.
+Section "${PRODUCT} (required)"
+
+    SectionIn RO
+
+    ; Set output path to the installation directory.
+    SetOutPath "$INSTDIR"
+
+    File "${SRCDIR}\Changelog"
+    File "${SRCDIR}\COPYING"
+    File "${SRCDIR}\COPYING.LIB"
+    File "${SRCDIR}\README"
+    File "${SRCDIR}\VERSION"
+
+    File "${BINDIR}\*.bmp"
+    File "${BINDIR}\*.bin"
+    File "${BINDIR}\*.dtb"
+    File "${BINDIR}\*.rom"
+    File "${BINDIR}\openbios-*"
+
+    File /r "${BINDIR}\keymaps"
+!ifdef CONFIG_GTK
+    File /r "${BINDIR}\share"
+!endif
+
+!ifdef W64
+    SetRegView 64
+!endif
+
+    ; Write the installation path into the registry
+    WriteRegStr HKLM SOFTWARE\${PRODUCT} "Install_Dir" "$INSTDIR"
+
+    ; Write the uninstall keys for Windows
+    WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "QEMU"
+    WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" '"${UNINST_EXE}"'
+    WriteRegDWORD HKLM "${UNINST_KEY}" "NoModify" 1
+    WriteRegDWORD HKLM "${UNINST_KEY}" "NoRepair" 1
+    WriteUninstaller "qemu-uninstall.exe"
+SectionEnd
+
+Section "Tools" SectionTools
+    SetOutPath "$INSTDIR"
+    File "${BINDIR}\qemu-img.exe"
+    File "${BINDIR}\qemu-io.exe"
+SectionEnd
+
+SectionGroup "System Emulations" SectionSystem
+
+!include "${BINDIR}\system-emulations.nsh"
+
+SectionGroupEnd
+
+!ifdef DLLDIR
+Section "Libraries (DLL)" SectionDll
+    SetOutPath "$INSTDIR"
+    File "${DLLDIR}\*.dll"
+SectionEnd
+!endif
+
+!ifdef CONFIG_DOCUMENTATION
+Section "Documentation" SectionDoc
+    SetOutPath "$INSTDIR"
+    File "${BINDIR}\qemu-doc.html"
+    File "${BINDIR}\qemu-tech.html"
+    CreateDirectory "$SMPROGRAMS\${PRODUCT}"
+    CreateShortCut "$SMPROGRAMS\${PRODUCT}\User Documentation.lnk" "$INSTDIR\qemu-doc.html" "" "$INSTDIR\qemu-doc.html" 0
+    CreateShortCut "$SMPROGRAMS\${PRODUCT}\Technical Documentation.lnk" "$INSTDIR\qemu-tech.html" "" "$INSTDIR\qemu-tech.html" 0
+SectionEnd
+!endif
+
+; Optional section (can be disabled by the user)
+Section "Start Menu Shortcuts" SectionMenu
+    CreateDirectory "$SMPROGRAMS\${PRODUCT}"
+    CreateShortCut "$SMPROGRAMS\${PRODUCT}\Uninstall.lnk" "${UNINST_EXE}" "" "${UNINST_EXE}" 0
+SectionEnd
+
+;--------------------------------
+
+; Uninstaller
+
+Section "Uninstall"
+    ; Remove registry keys
+!ifdef W64
+    SetRegView 64
+!endif
+    DeleteRegKey HKLM "${UNINST_KEY}"
+    DeleteRegKey HKLM SOFTWARE\${PRODUCT}
+
+    ; Remove shortcuts, if any
+    Delete "$SMPROGRAMS\${PRODUCT}\User Documentation.lnk"
+    Delete "$SMPROGRAMS\${PRODUCT}\Technical Documentation.lnk"
+    Delete "$SMPROGRAMS\${PRODUCT}\Uninstall.lnk"
+    RMDir "$SMPROGRAMS\${PRODUCT}"
+
+    ; Remove files and directories used
+    Delete "$INSTDIR\Changelog"
+    Delete "$INSTDIR\COPYING"
+    Delete "$INSTDIR\COPYING.LIB"
+    Delete "$INSTDIR\README"
+    Delete "$INSTDIR\VERSION"
+    Delete "$INSTDIR\*.bmp"
+    Delete "$INSTDIR\*.bin"
+    Delete "$INSTDIR\*.dll"
+    Delete "$INSTDIR\*.dtb"
+    Delete "$INSTDIR\*.rom"
+    Delete "$INSTDIR\openbios-*"
+    Delete "$INSTDIR\qemu-img.exe"
+    Delete "$INSTDIR\qemu-io.exe"
+    Delete "$INSTDIR\qemu.exe"
+    Delete "$INSTDIR\qemu-system-*.exe"
+    Delete "$INSTDIR\qemu-doc.html"
+    Delete "$INSTDIR\qemu-tech.html"
+    RMDir /r "$INSTDIR\keymaps"
+    RMDir /r "$INSTDIR\share"
+    ; Remove generated files
+    Delete "$INSTDIR\stderr.txt"
+    Delete "$INSTDIR\stdout.txt"
+    ; Remove uninstaller
+    Delete "${UNINST_EXE}"
+    RMDir "$INSTDIR"
+SectionEnd
+
+;--------------------------------
+
+; Descriptions (mouse-over).
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionSystem}  "System emulation."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_alpha}  "Alpha system emulation."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_alphaw} "Alpha system emulation (GUI)."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_i386}   "PC i386 system emulation."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_i386w}  "PC i386 system emulation (GUI)."
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionTools} "Tools."
+!ifdef DLLDIR
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionDll}   "Runtime Libraries (DLL)."
+!endif
+!ifdef CONFIG_DOCUMENTATION
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionDoc}   "Documentation."
+!endif
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionMenu}  "Menu entries."
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;--------------------------------
+; Functions.
+
+Function .onInit
+    !insertmacro MUI_LANGDLL_DISPLAY
+FunctionEnd