[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 119/132] meson: add NSIS building
From: |
Paolo Bonzini |
Subject: |
[PATCH 119/132] meson: add NSIS building |
Date: |
Thu, 19 Dec 2019 13:23:39 +0100 |
From: Marc-André Lureau <address@hidden>
Signed-off-by: Marc-André Lureau <address@hidden>
---
Makefile | 57 --------------------------------------------------------
meson.build | 23 +++++++++++++++++++++++
scripts/nsis.sh | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 81 insertions(+), 57 deletions(-)
create mode 100755 scripts/nsis.sh
diff --git a/Makefile b/Makefile
index ac21e14..710659b 100644
--- a/Makefile
+++ b/Makefile
@@ -335,62 +335,6 @@ cscope:
find "$(SRC_PATH)/" -name "*.[chsS]" -print | sed 's,^\./,,' >
"$(SRC_PATH)/cscope.files"
cscope -b -i"$(SRC_PATH)/cscope.files"
-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)" \
- -DDISPLAYVERSION="$(VERSION)" \
- $(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 ($(wildcard config-host.mak),)
@@ -430,7 +374,6 @@ endif
@echo ''
ifdef CONFIG_WIN32
@echo 'Windows targets:'
- @echo ' installer - Build NSIS-based installer for QEMU'
ifdef QEMU_GA_MSI_ENABLED
@echo ' msi - Build MSI-based installer for qemu-ga'
endif
diff --git a/meson.build b/meson.build
index 40ba735..ce67e4c 100644
--- a/meson.build
+++ b/meson.build
@@ -1040,3 +1040,26 @@ if pod2man.found() and build_docs
'--release=" "', '@INPUT@'])
endforeach
endif
+
+if host_machine.system() == 'windows'
+ nsis_cmd = [
+ find_program('scripts/nsis.sh'),
+ '@OUTPUT@',
+ get_option('prefix'),
+ meson.current_source_dir(),
+ host_machine.cpu_family(),
+ '-DDISPLAYVERSION=@0@'.format(config_host['VERSION']),
+ ]
+ if build_docs
+ nsis_cmd += '-DCONFIG_DOCUMENTATION=y'
+ endif
+ if 'CONFIG_GTK' in config_host
+ nsis_cmd += '-DCONFIG_GTK=y'
+ endif
+
+ custom_target('nsis',
+ output: 'qemu-setup-' + config_host['VERSION'] + '.exe',
+ input: files('qemu.nsi'),
+ build_always_stale: true,
+ command: nsis_cmd + ['@INPUT@'])
+endif
diff --git a/scripts/nsis.sh b/scripts/nsis.sh
new file mode 100755
index 0000000..ad23708
--- /dev/null
+++ b/scripts/nsis.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+OUTFILE="$1"
+shift
+PREFIX="$1"
+shift
+SRCDIR="$1"
+shift
+CPU="$1"
+shift
+
+DESTDIR=$(mktemp -d)
+trap "rm -rf $DESTDIR" EXIT
+make DESTDIR="$DESTDIR" install
+
+signcode() {
+ if [ -z "$SIGNCODE" ]; then
+ return
+ fi
+ "$SIGNCODE" "$@"
+}
+
+shopt -s nullglob
+
+(
+ cd "$DESTDIR$PREFIX"
+ 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
+) > "$DESTDIR$PREFIX/system-emulations.nsh"
+
+(
+ cd "$DESTDIR$PREFIX"
+ for i in *.exe; do
+ signcode "$i"
+ done
+)
+
+if [ "$CPU" = "x86_64" ]; then
+ CPUARG="-DW64"
+ DLLDIR="w64"
+else
+ DLLDIR="w32"
+fi
+
+if [ -d "$SRCDIR/dll" ]; then
+ DLLARG="-DDLLDIR=$SRCDIR/dll/$DLLDIR"
+fi
+
+makensis -V2 -NOCD -DSRCDIR="$SRCDIR" -DBINDIR="$DESTDIR$PREFIX" \
+ $CPUARG $DLLARG -DOUTFILE="$OUTFILE" "$@"
+
+signcode "$OUTFILE"
--
1.8.3.1
- [PATCH 110/132] meson: cpu-emu, (continued)
- [PATCH 110/132] meson: cpu-emu, Paolo Bonzini, 2019/12/19
- [PATCH 111/132] meson: softmmu, Paolo Bonzini, 2019/12/19
- [PATCH 108/132] meson: linux-user, Paolo Bonzini, 2019/12/19
- [PATCH 114/132] build-sys/rules.mak: remove version.o, Paolo Bonzini, 2019/12/19
- [PATCH 113/132] systemtap, Paolo Bonzini, 2019/12/19
- [PATCH 112/132] Aaaaallelujah!, Paolo Bonzini, 2019/12/19
- [PATCH 115/132] remove Makefile.target, Paolo Bonzini, 2019/12/19
- [PATCH 116/132] meson: sphinx-build, Paolo Bonzini, 2019/12/19
- [PATCH 117/132] meson: generate version.texi, Paolo Bonzini, 2019/12/19
- [PATCH 120/132] meson: install some scripts, Paolo Bonzini, 2019/12/19
- [PATCH 119/132] meson: add NSIS building,
Paolo Bonzini <=
- [PATCH 121/132] meson: install edk2, Paolo Bonzini, 2019/12/19
- [PATCH 122/132] meson: install blobs, Paolo Bonzini, 2019/12/19
- [PATCH 118/132] meson: build texi doc, Paolo Bonzini, 2019/12/19
- [PATCH 124/132] meson: install icons, Paolo Bonzini, 2019/12/19
- [PATCH 123/132] meson: install edk2 json descriptors, Paolo Bonzini, 2019/12/19
- [PATCH 125/132] meson: install desktop file, Paolo Bonzini, 2019/12/19
- [PATCH 126/132] meson: install keymaps, Paolo Bonzini, 2019/12/19
- [PATCH 127/132] meson: convert po/, Paolo Bonzini, 2019/12/19
- [PATCH 128/132] meson: replace pc-bios/keymaps/Makefile, Paolo Bonzini, 2019/12/19
- [PATCH 129/132] meson: replace mostly useless pc-bios/Makefile, Paolo Bonzini, 2019/12/19