changeset 303:7edd1954fdaf

Implement 'install' target in cross-mingw Makefile, remove the now extraneous build shell script.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 15 May 2023 14:07:19 +0300
parents 52f0da883469
children 06c846192975
files Makefile.cross-mingw build-win32.sh
diffstat 2 files changed, 19 insertions(+), 103 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.cross-mingw	Mon May 15 14:06:50 2023 +0300
+++ b/Makefile.cross-mingw	Mon May 15 14:07:19 2023 +0300
@@ -2,6 +2,8 @@
 ### For win32 version cross-compilation with MinGW suite @ Linux
 ###
 
+INSTALL = install -s
+
 # Qt version dependant stuff
 QT_VERSION_PREFIX = Qt6
 QT_PREFIX ?= /misc/packages/qt6-build/qtbase
@@ -18,16 +20,18 @@
 # Compiler/tools 64/32-bit
 ifeq ($(MINGW),64)
 BINTOOL_PREFIX ?= x86_64-w64-mingw32-
-MINGW_SYS_PATH ?= /usr/x86_64-w64-mingw32
-MINGW_LOCAL_PATH ?= /usr/local/x86_64-w64-mingw32
 OBJPATH ?= ./obj/win64/
 else
 BINTOOL_PREFIX ?= i686-w64-mingw32-
-MINGW_SYS_PATH ?= /usr/i686-w64-mingw32
-MINGW_LOCAL_PATH ?= /usr/local/i686-w64-mingw32
 OBJPATH ?= ./obj/win32/
 endif
 
+APP_INSTALL_SYS_DLLS = libgcc_s_dw2-1 libstdc++-6
+
+MINGW_CC1_PATH = $(shell $(BINTOOL_PREFIX)g++ -print-prog-name=cc1)
+MINGW_LIBS_PATH = $(shell dirname $(MINGW_CC1_PATH))
+MINGW_ZLIB1_PATH = $(shell $(BINTOOL_PREFIX)g++ -print-file-name=zlib1.dll)
+
 
 # Compiler flags and linker flags
 XCFLAGS += -fno-keep-inline-dllexport -Wno-attributes
@@ -50,3 +54,14 @@
 CLEAN_TARGETS += src/winres.rc
 
 include Makefile.gen
+
+
+install: all
+	$(MKDIR_P) $(PREFIX)/platforms/
+	$(INSTALL) $(QT_PREFIX)/plugins/platforms/qwindows.dll $(PREFIX)/platforms/
+	$(MKDIR_P) $(PREFIX)/sqldrivers/
+	$(INSTALL) $(QT_PREFIX)/plugins/sqldrivers/qsqlite.dll $(PREFIX)/sqldrivers/
+	$(INSTALL) $(APP_BIN) $(PREFIX)
+	$(INSTALL) $(foreach DLL,$(QT_MODULES),$(QT_PREFIX)/bin/$(QT_VERSION_PREFIX)$(DLL).dll) $(PREFIX)
+	$(INSTALL) $(foreach DLL,$(APP_INSTALL_SYS_DLLS),$(MINGW_LIBS_PATH)/$(DLL).dll) $(PREFIX)
+	$(INSTALL) $(MINGW_ZLIB1_PATH) $(PREFIX)
--- a/build-win32.sh	Mon May 15 14:06:50 2023 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-#!/bin/sh
-INSTALL_USB="/mnt/sdb1"
-INSTALL_WINE="$HOME/.wine/drive_c/Syntilista/"
-TMPFILE="unix2dos.tmp"
-
-MINGW_CPP="i686-w64-mingw32-g++"
-BINPATH="win32/"
-
-QT_VERSION_PREFIX="Qt5"
-QT_BASE="/misc/packages/qt5-src/qtbase"
-
-
-
-fatal()
-{
-    echo "ERROR: $1"
-    exit 1
-}
-
-
-do_cp()
-{
-    cp -f "$1" "$2" || fatal "Could not copy file '$1' to '$2'."
-}
-
-
-do_mkdir()
-{
-    mkdir -p "$1" || fatal "Could not create directory '$1'."
-}
-
-
-do_cpinstall()
-{
-    # $1 src base path
-    # $2 dst base path
-    # $3 common sub path
-    # $4 filename
-
-    do_mkdir "$2/$3"
-    do_cp "$1/$3/$4" "$2/$3/$4"
-}
-
-
-do_install()
-{
-    TARGET="$1"
-
-    if test -d "$TARGET"; then
-        rm -fr "$TARGET"
-    elif test -e "$TARGET"; then
-        fatal "Target '$TARGET' exists but is not a directory!"
-    fi
-
-    mkdir -p "$TARGET" || fatal "Could not create target directory '$TARGET'."
-
-    echo "Installing to '${TARGET}' ..."
-
-    do_cpinstall "${QT_BASE}/plugins/" "$TARGET" "platforms" "qwindows.dll"
-    do_cpinstall "${QT_BASE}/plugins/" "$TARGET" "sqldrivers" "qsqlite.dll"
-    do_cpinstall "${QT_BASE}/plugins/" "$TARGET" "printsupport" "windowsprintersupport.dll"
-
-    for i in Core Gui Sql Widgets PrintSupport Network; do
-        do_cp "${QT_BASE}/bin/${QT_VERSION_PREFIX}${i}.dll" "$TARGET"
-    done
-
-    for i in libstdc++-6 libgcc_s_sjlj-1; do
-        do_cp "${MINGW_PATH}/${i}.dll" "$TARGET"
-        strip "${TARGET}/${i}.dll"
-    done
-
-    for i in zlib1.dll; do
-        do_cp "${MINGW_LIBS}/${i}" "$TARGET"
-    done
-
-    do_cp "$BINPATH/Syntilista.exe" "$TARGET"
-    unix2dos -n "COPYING.html" "$TMPFILE" || fatal "Could not unix2dos."
-    do_cp "$TMPFILE" "$TARGET/COPYING.txt"
-    rm -f "$TMPFILE"
-}
-
-
-### Check dirs
-MINGW_PATH="$(dirname $(realpath $($MINGW_CPP -print-prog-name=cc1)))"
-MINGW_LIBS="$(dirname $(realpath $($MINGW_CPP -print-file-name=zlib1.dll)))"
-test -d "$MINGW_PATH" || fatal "Could not find MinGW C++ compiler path!"
-test -d "$MINGW_LIBS" || fatal "Could not find MinGW library path (zlib1.dll not found)"
-
-### Build the binaries
-echo "QT: ${QT_BASE} / MinGW: ${MINGW_PATH}"
-make -f Makefile.cross-mingw QT_PREFIX="$QT_BASE" BINPATH="$BINPATH" || fatal "Compilation failed."
-
-### Install to targets
-if test -d "$INSTALL_USB" && mount|grep -q "$INSTALL_USB"; then
-    do_install "$INSTALL_USB/Syntilista"
-else
-    echo "INFO: '$INSTALL_USB' is not mounted. Not installing."
-fi
-#do_install "$INSTALL_WINE"