From patchwork Mon Jul 15 21:52:51 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Weil X-Patchwork-Id: 259272 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id B0C392C0166 for ; Tue, 16 Jul 2013 08:06:53 +1000 (EST) Received: from localhost ([::1]:50038 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uyquw-0007oa-Ri for incoming@patchwork.ozlabs.org; Mon, 15 Jul 2013 18:06:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57908) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UyquZ-0007oU-Dq for qemu-devel@nongnu.org; Mon, 15 Jul 2013 18:06:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UyqhU-000743-P2 for qemu-devel@nongnu.org; Mon, 15 Jul 2013 17:53:32 -0400 Received: from [2a03:4000:2:362::1] (port=39481 helo=v2201305906712890.yourvserver.net) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UyqhU-00073N-2v for qemu-devel@nongnu.org; Mon, 15 Jul 2013 17:52:56 -0400 Received: by v2201305906712890.yourvserver.net (Postfix, from userid 1000) id 1C2C4181384; Mon, 15 Jul 2013 23:52:52 +0200 (CEST) From: Stefan Weil To: qemu-devel Date: Mon, 15 Jul 2013 23:52:51 +0200 Message-Id: <1373925172-26834-1-git-send-email-sw@weilnetz.de> X-Mailer: git-send-email 1.7.10.4 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a03:4000:2:362::1 Cc: Stefan Weil Subject: [Qemu-devel] [PATCH] w32, w64: Add build rule for installer X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 --- This code is used to build my signed installers for QEMU on Windows, see http://qemu.weilnetz.de. Best regards Stefan W. 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 --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 . + +; 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