Project

General

Profile

Feature #702 ยป 0004-Msys2-Drop-autotools-support.patch

Marko Lindqvist, 10/20/2024 05:54 AM

View differences:

platforms/windows/Makefile.am
installer_msys2/freeciv-server.cmd \
installer_msys2/freeciv-ruledit.cmd \
installer_msys2/Freeciv.url \
installer_msys2/Makefile.autotools \
installer_msys2/Makefile.meson \
installer_msys2/cleanup_checkout.sh \
installer_cross/create-freeciv-gtk-qt-nsi.sh \
installer_cross/create-freeciv-sdl2-nsi.sh \
installer_cross/create-freeciv-ruledit-nsi.sh \
platforms/windows/installer_msys2/Makefile.autotools
#
# Makefile for Freeciv Windows installer creation
#
# See doc/README.msys2 for building instructions.
#
#
# Variable setup
#
MAKEFILE_NAME=Makefile.autotools
OUT_DIR=autotools/output
BUILD_DIR=autotools/build
INST_DIR=autotools/install
NSI_DIR=autotools/nsi
SRC_ROOT=../../..
ifeq ($(MSYSTEM),MINGW64)
WINARCH=win64
ARCHDIR=mingw64
LIBGCCDLL=libgcc_s_seh-1.dll
CRYPTOLIB_SUFFIX=-x64
PREF_WIN_VER=0x0603
else ifeq ($(MSYSTEM),UCRT64)
WINARCH=win64-10
ARCHDIR=ucrt64
CRYPTOLIB_SUFFIX=-x64
LIBGCCDLL=libgcc_s_seh-1.dll
PREF_WIN_VER=0x0A00
else ifeq ($(MSYSTEM),CLANG64)
WINARCH=win64+
ARCHDIR=clang64
LIBGCCDLL=
CRYPTOLIB_SUFFIX=-x64
PREF_WIN_VER=0x0A00
else
error "Unsupported MSYSTEM environment"
endif
ifeq ($(MIN_WIN_VER),)
MIN_WIN_VER=$(PREF_WIN_VER)
endif
ifeq ($(MAKE_PARAMS),)
MAKE_PARAMS="-j$(shell nproc)"
endif
ifeq ($(MOCCMD),)
QT6_MOCCMD="/$(ARCHDIR)/share/qt6/bin/moc.exe"
else
QT6_MOCCMD="$(MOCCMD)"
endif
MAGICKVER=7.Q16HDRI-10
FFIVER=8
CRYPTOVERSUF=3${CRYPTOLIB_SUFFIX}
INSTSUB=${ARCHDIR}
# msys2 has dlls in...
DLLPATH_PREFIX=/$(ARCHDIR)/bin/
ifeq ($(CI),yes)
ICUVER=75
else
ICUVER=75
endif
#
# Make rules
#
# By default build all installers.
all: all-$(WINARCH)
all-win64: gtk3.22-installer sdl2-installer ruledit-installer-qt5 qt5-installer gtk4-installer
all-win64-10: gtk3.22-installer sdl2-installer ruledit-installer qt6-installer gtk4-installer
all-win64+:
make -f $(MAKEFILE_NAME) GUI=gtk3.22 CLIENT=gtk3.22 FCMP=gtk3 EXTRA_CONFIG="--disable-ruledit CFLAGS=\"-Wno-cast-align $$CFLAGS\" $(EXTRA_CONFIG)" install-freeciv-gtk3.22
make -f $(MAKEFILE_NAME) GUI=gtk4 CLIENT=gtk4 FCMP=gtk4 EXTRA_CONFIG="--disable-ruledit CFLAGS=\"-Wno-cast-align $$CFLAGS\" $(EXTRA_CONFIG)" install-freeciv-gtk4
make -f $(MAKEFILE_NAME) GUI=sdl2 CLIENT=sdl2 FCMP=gtk4 EXTRA_CONFIG="--disable-ruledit CFLAGS=\"-Wno-cast-align $$CFLAGS\" $(EXTRA_CONFIG)" install-freeciv-sdl2
make -f $(MAKEFILE_NAME) GUI=qt6 CLIENT=qt FCMP=qt EXTRA_CONFIG="--with-qtver=qt6 --with-qt6-includes=/$(ARCHDIR)/include/qt6 --with-qt6-libs=/$(ARCHDIR)/lib CFLAGS=\"-Wno-cast-align $$CFLAGS\" $(EXTRA_CONFIG)" MOCCMD="$(QT6_MOCCMD)" install-freeciv-qt6
make -f $(MAKEFILE_NAME) EXTRA_CONFIG="CFLAGS=\"-Wno-cast-align $$CFLAGS\" $(EXTRA_CONFIG)" MOCCMD="$(QT6_MOCCMD)" install-ruledit-qt6
gtk3.22-installer:
make -f $(MAKEFILE_NAME) GUI=gtk3.22 CLIENT=gtk3.22 FCMP=gtk3 EXTRA_CONFIG="--disable-ruledit $(EXTRA_CONFIG)" wrap-gtk3.22
gtk4-installer:
make -f $(MAKEFILE_NAME) GUI=gtk4 CLIENT=gtk4 FCMP=gtk4 EXTRA_CONFIG="--disable-ruledit $(EXTRA_CONFIG)" wrap-gtk4
sdl2-installer:
make -f $(MAKEFILE_NAME) GUI=sdl2 CLIENT=sdl2 FCMP=gtk4 EXTRA_CONFIG="--disable-ruledit $(EXTRA_CONFIG)" wrap-sdl2
qt-installer: qt5-installer
qt5-installer:
make -f $(MAKEFILE_NAME) GUI=qt5 CLIENT=qt FCMP=qt EXTRA_CONFIG="--with-qtver=qt5 --with-qt5-includes=/$(ARCHDIR)/include --with-qt5-libs=/$(ARCHDIR)/lib $(EXTRA_CONFIG)" wrap-qt5
qt6-installer:
make -f $(MAKEFILE_NAME) GUI=qt6 CLIENT=qt FCMP=qt EXTRA_CONFIG="--with-qtver=qt6 --with-qt6-includes=/$(ARCHDIR)/include/qt6 --with-qt6-libs=/$(ARCHDIR)/lib $(EXTRA_CONFIG)" MOCCMD="$(QT6_MOCCMD)" wrap-qt6
ruledit-installer: ruledit-installer-qt6
ruledit-installer-qt5:
# EXTRA_CONFIG="$(EXTRA_CONFIG)" *does* make a difference - it unwraps one layer
# of escapes, needed for snapshot builds.
make -f $(MAKEFILE_NAME) EXTRA_CONFIG="$(EXTRA_CONFIG)" wrap-ruledit-qt5
ruledit-installer-qt6:
# EXTRA_CONFIG="$(EXTRA_CONFIG)" *does* make a difference - it unwraps one layer
# of escapes, needed for snapshot builds.
make -f $(MAKEFILE_NAME) EXTRA_CONFIG="$(EXTRA_CONFIG)" MOCCMD="$(QT6_MOCCMD)" wrap-ruledit-qt6
snapshot:
cd $(SRC_ROOT) ; ./scripts/refresh_changelog.sh ; ./autogen.sh --no-configure-run
make -f $(MAKEFILE_NAME) VERSION_REVTYPE="git" EXTRA_CONFIG="--enable-gitrev --with-project-definition=$(SRC_ROOT)/../../../bootstrap/snapshot.project CFLAGS=\\\"-Werror $$CFLAGS\\\" CXXFLAGS=\\\"$$CXXFLAGS\\\"" all
ci:
cd $(SRC_ROOT) ; ./autogen.sh --no-configure-run
make -f $(MAKEFILE_NAME) VERSION_REVTYPE="git" CI=yes EXTRA_CONFIG="--enable-gitrev --with-project-definition=$(SRC_ROOT)/../../../bootstrap/snapshot.project CFLAGS=\\\"-Werror $$CFLAGS\\\" CXXFLAGS=\\\"$$CXXFLAGS\\\"" ruledit-installer-qt6
# Configure Freeciv
configure-freeciv-common:
# Create build directory
mkdir -p $(BUILD_DIR)/$(WINARCH)-$(GUI)
# Configure
cd $(BUILD_DIR)/$(WINARCH)-$(GUI); $(SRC_ROOT)/../../../configure FREECIV_LABEL_FORCE="<base>-msys2" CPPFLAGS="-D_WIN32_WINNT=$(MIN_WIN_VER)" --enable-client=$(CLIENT) --with-followtag="windows-S3_4" --with-tinycthread --without-readline --disable-sys-lua --enable-fcdb=sqlite3 --with-sqlite3-prefix=/$(ARCHDIR) --enable-fcmp=$(FCMP) --with-cacert-path="./ssl/certs/ca-bundle.crt" $(EXTRA_CONFIG)
configure-freeciv-ruledit-qt5:
# Create build directory
mkdir -p $(BUILD_DIR)/$(WINARCH)-ruledit-qt5
# Configure
cd $(BUILD_DIR)/$(WINARCH)-ruledit-qt5; $(SRC_ROOT)/../../../configure FREECIV_LABEL_FORCE="<base>-msys2" CPPFLAGS="-D_WIN32_WINNT=$(MIN_WIN_VER)" --with-qtver=qt5 --disable-client --disable-server --disable-fcmp --disable-freeciv-manual --disable-sys-lua --enable-ruledit --enable-ai-static=stub --with-cacert-path="./ssl/certs/ca-bundle.crt" --with-qt5-includes=/$(ARCHDIR)/include --with-qt5-libs=/$(ARCHDIR)/lib $(EXTRA_CONFIG)
configure-freeciv-ruledit-qt6:
# Create build directory
mkdir -p $(BUILD_DIR)/$(WINARCH)-ruledit-qt6
# Configure
cd $(BUILD_DIR)/$(WINARCH)-ruledit-qt6; $(SRC_ROOT)/../../../configure FREECIV_LABEL_FORCE="<base>-msys2" CPPFLAGS="-D_WIN32_WINNT=$(MIN_WIN_VER)" --with-qtver=qt6 --disable-client --disable-server --disable-fcmp --disable-freeciv-manual --disable-sys-lua --enable-ruledit --enable-ai-static=stub --with-cacert-path="./ssl/certs/ca-bundle.crt" --with-qt6-includes=/$(ARCHDIR)/include/qt6 --with-qt6-libs=/$(ARCHDIR)/lib $(EXTRA_CONFIG)
# Install Freeciv
install-freeciv-common: clean-install-common configure-freeciv-common
# Make .gmo and langstat files. For the former, this needs to be before 'make install'
make -C $(BUILD_DIR)/$(WINARCH)-$(GUI)/translations/core update-po
make -C $(BUILD_DIR)/$(WINARCH)-$(GUI)/bootstrap langstat_core.txt
# Restore .po files modified by the above update-po, so that repository does not
# Without this, sources would appear modified, in case of --enable-gitrev
./cleanup_checkout.sh $(SRC_ROOT)
# Make install
make -C $(BUILD_DIR)/$(WINARCH)-$(GUI) DESTDIR=`pwd`/$(INST_DIR)/$(WINARCH)-$(GUI) $(MAKE_PARAMS) install
# Reorder directory layout
mv $(INST_DIR)/$(WINARCH)-$(GUI)/$(INSTSUB)/bin/* $(INST_DIR)/$(WINARCH)-$(GUI)/
mv $(INST_DIR)/$(WINARCH)-$(GUI)/$(INSTSUB)/etc $(INST_DIR)/$(WINARCH)-$(GUI)/
mv $(INST_DIR)/$(WINARCH)-$(GUI)/$(INSTSUB)/share/freeciv $(INST_DIR)/$(WINARCH)-$(GUI)/data
mkdir -p $(INST_DIR)/$(WINARCH)-$(GUI)/share
mv $(INST_DIR)/$(WINARCH)-$(GUI)/$(INSTSUB)/share/locale $(INST_DIR)/$(WINARCH)-$(GUI)/share/
mv $(INST_DIR)/$(WINARCH)-$(GUI)/$(INSTSUB)/share/doc $(INST_DIR)/$(WINARCH)-$(GUI)/doc
mkdir -p $(INST_DIR)/$(WINARCH)-$(GUI)/debuginfo
cp $(BUILD_DIR)/$(WINARCH)-$(GUI)/gen_headers/fc_config.h $(INST_DIR)/$(WINARCH)-$(GUI)/debuginfo
mkdir -p $(INST_DIR)/$(WINARCH)-$(GUI)/doc/freeciv/installer
cat licenses/header.txt $(SRC_ROOT)/COPYING > $(INST_DIR)/$(WINARCH)-$(GUI)/doc/freeciv/installer/COPYING.installer
# Delete unneeded files
rm -r $(INST_DIR)/$(WINARCH)-$(GUI)/$(INSTSUB)
# Strip 'freeciv-manual' and 'freeciv-mp-<gui>' executables
strip $(INST_DIR)/$(WINARCH)-$(GUI)/freeciv-m*
# Add start menu files
cp freeciv-server.cmd freeciv-mp-$(FCMP).cmd freeciv-$(CLIENT).cmd Freeciv.url $(INST_DIR)/$(WINARCH)-$(GUI)/
install-freeciv-gtk3.22: install-freeciv-common
install-freeciv-gtk4: install-freeciv-common
install-freeciv-sdl2: install-freeciv-common
install-freeciv-qt5: install-freeciv-common
# Strip 'freeciv-ruledit' executable
strip $(INST_DIR)/$(WINARCH)-$(GUI)/freeciv-ruledit.exe
cp freeciv-ruledit.cmd $(INST_DIR)/$(WINARCH)-$(GUI)/
install-freeciv-qt6: install-freeciv-common
# Strip 'freeciv-ruledit' executable
strip $(INST_DIR)/$(WINARCH)-$(GUI)/freeciv-ruledit.exe
cp freeciv-ruledit.cmd $(INST_DIR)/$(WINARCH)-$(GUI)/
install-ruledit-dir-qt5:
mkdir -p $(INST_DIR)/$(WINARCH)-ruledit-qt5/share
install-ruledit-dir-qt6:
mkdir -p $(INST_DIR)/$(WINARCH)-ruledit-qt6/share
install-ruledit-qt5: configure-freeciv-ruledit-qt5 install-ruledit-dir-qt5
# Make .gmo and langstat files. For the former, this needs to be before 'make install'
make -C $(BUILD_DIR)/$(WINARCH)-ruledit-qt5/translations/ruledit update-po
make -C $(BUILD_DIR)/$(WINARCH)-ruledit-qt5/bootstrap langstat_ruledit.txt
# Restore .po files modified by the above update-po, so that repository does not
# Without this, sources would appear modified, in case of --enable-gitrev
./cleanup_checkout.sh $(SRC_ROOT)
# Make install
make -C $(BUILD_DIR)/$(WINARCH)-ruledit-qt5 DESTDIR=`pwd`/$(INST_DIR)/$(WINARCH)-ruledit-qt5/ $(MAKE_PARAMS) install
# Reorder directory layout
mv $(INST_DIR)/$(WINARCH)-ruledit-qt5/$(INSTSUB)/bin/* $(INST_DIR)/$(WINARCH)-ruledit-qt5/
mv $(INST_DIR)/$(WINARCH)-ruledit-qt5/$(INSTSUB)/share/freeciv $(INST_DIR)/$(WINARCH)-ruledit-qt5/data
mv $(INST_DIR)/$(WINARCH)-ruledit-qt5/$(INSTSUB)/share/locale $(INST_DIR)/$(WINARCH)-ruledit-qt5/share/
mv $(INST_DIR)/$(WINARCH)-ruledit-qt5/$(INSTSUB)/share/doc $(INST_DIR)/$(WINARCH)-ruledit-qt5/doc
mkdir -p $(INST_DIR)/$(WINARCH)-ruledit-qt5/debuginfo
cp $(BUILD_DIR)/$(WINARCH)-ruledit-qt5/gen_headers/fc_config.h $(INST_DIR)/$(WINARCH)-ruledit-qt5/debuginfo
mkdir -p $(INST_DIR)/$(WINARCH)-ruledit-qt5/doc/freeciv/installer
cat licenses/header.txt $(SRC_ROOT)/COPYING > $(INST_DIR)/$(WINARCH)-ruledit-qt5/doc/freeciv/installer/COPYING.installer
# Delete unneeded files
rm -r $(INST_DIR)/$(WINARCH)-ruledit-qt5/$(INSTSUB)
# Strip 'freeciv-ruledit' executable
strip $(INST_DIR)/$(WINARCH)-ruledit-qt5/freeciv-ruledit.exe
# Add start menu files
cp freeciv-ruledit.cmd Freeciv.url $(INST_DIR)/$(WINARCH)-ruledit-qt5/
install-ruledit-qt6: configure-freeciv-ruledit-qt6 install-ruledit-dir-qt6
# Make .gmo and langstat files. For the former, this needs to be before 'make install'
make -C $(BUILD_DIR)/$(WINARCH)-ruledit-qt6/translations/ruledit update-po
make -C $(BUILD_DIR)/$(WINARCH)-ruledit-qt6/bootstrap langstat_ruledit.txt
# Restore .po files modified by the above update-po, so that repository does not
# Without this, sources would appear modified, in case of --enable-gitrev
./cleanup_checkout.sh $(SRC_ROOT)
# Make install
make -C $(BUILD_DIR)/$(WINARCH)-ruledit-qt6 DESTDIR=`pwd`/$(INST_DIR)/$(WINARCH)-ruledit-qt6/ $(MAKE_PARAMS) install
# Reorder directory layout
mv $(INST_DIR)/$(WINARCH)-ruledit-qt6/$(INSTSUB)/bin/* $(INST_DIR)/$(WINARCH)-ruledit-qt6/
mv $(INST_DIR)/$(WINARCH)-ruledit-qt6/$(INSTSUB)/share/freeciv $(INST_DIR)/$(WINARCH)-ruledit-qt6/data
mv $(INST_DIR)/$(WINARCH)-ruledit-qt6/$(INSTSUB)/share/locale $(INST_DIR)/$(WINARCH)-ruledit-qt6/share/
mv $(INST_DIR)/$(WINARCH)-ruledit-qt6/$(INSTSUB)/share/doc $(INST_DIR)/$(WINARCH)-ruledit-qt6/doc
mkdir -p $(INST_DIR)/$(WINARCH)-ruledit-qt6/debuginfo
cp $(BUILD_DIR)/$(WINARCH)-ruledit-qt6/gen_headers/fc_config.h $(INST_DIR)/$(WINARCH)-ruledit-qt6/debuginfo
mkdir -p $(INST_DIR)/$(WINARCH)-ruledit-qt6/doc/freeciv/installer
cat licenses/header.txt $(SRC_ROOT)/COPYING > $(INST_DIR)/$(WINARCH)-ruledit-qt6/doc/freeciv/installer/COPYING.installer
# Delete unneeded files
rm -r $(INST_DIR)/$(WINARCH)-ruledit-qt6/$(INSTSUB)
# Strip 'freeciv-ruledit' executable
strip $(INST_DIR)/$(WINARCH)-ruledit-qt6/freeciv-ruledit.exe
# Add start menu files
cp freeciv-ruledit.cmd Freeciv.url $(INST_DIR)/$(WINARCH)-ruledit-qt6/
# Install Freeciv environment
SOUND_DLLS := \
SDL2.dll \
SDL2_mixer.dll \
libFLAC.dll \
libfluidsynth-3.dll \
libmodplug-1.dll \
libvorbis-0.dll \
libvorbisenc-2.dll \
libvorbisfile-3.dll \
libogg-0.dll \
libportaudio.dll \
libsndfile-1.dll \
libmpg123-0.dll \
libopusfile-0.dll \
libopus-0.dll
COMMON_DLLS := \
libstdc++-6.dll \
libcrypto-${CRYPTOVERSUF}.dll \
libpsl-5.dll \
libssl-${CRYPTOVERSUF}.dll \
libidn2-0.dll \
libnghttp2-14.dll \
libnghttp3-9.dll \
libssh2-1.dll \
libcurl-4.dll \
libgmp-10.dll \
libp11-kit-0.dll \
libtasn1-6.dll \
libatk-1.0-0.dll \
libbz2-1.dll \
libcairo-2.dll \
libcairo-gobject-2.dll \
libffi-${FFIVER}.dll \
libfontconfig-1.dll \
libfreetype-6.dll \
$(LIBGCCDLL) \
libgdk_pixbuf-2.0-0.dll \
libgio-2.0-0.dll \
libglib-2.0-0.dll \
libpcre2-8-0.dll \
libgmodule-2.0-0.dll \
libgobject-2.0-0.dll \
libgthread-2.0-0.dll \
libiconv-2.dll \
libintl-8.dll \
liblzma-5.dll \
libpango-1.0-0.dll \
libpangocairo-1.0-0.dll \
libpangowin32-1.0-0.dll \
libfribidi-0.dll \
libpixman-1-0.dll \
libpng16-16.dll \
libxml2-2.dll \
zlib1.dll \
libwinpthread-1.dll \
libicuuc${ICUVER}.dll \
libicudt${ICUVER}.dll \
libsqlite3-0.dll \
exchndl.dll \
mgwhelp.dll \
libbrotlidec.dll \
libbrotlicommon.dll \
libreadline8.dll \
libtermcap-0.dll \
libzstd.dll \
libMagickWand-${MAGICKVER}.dll \
libMagickCore-${MAGICKVER}.dll \
libgomp-1.dll \
libfftw3-3.dll \
liblcms2-2.dll \
liblqr-1-0.dll \
libltdl-7.dll \
libraqm-0.dll \
libexpat-1.dll \
$(SOUND_DLLS)
install-env-common:
# Add DLLs
cp -R $(addprefix $(DLLPATH_PREFIX), $(COMMON_DLLS)) $(INST_DIR)/$(WINARCH)-$(GUI)/
mkdir -p $(INST_DIR)/$(WINARCH)-$(GUI)/ssl/certs
cp -R /$(ARCHDIR)/etc/ssl/certs/ca-bundle.crt $(INST_DIR)/$(WINARCH)-$(GUI)/ssl/certs/
DEFAULT_FCMP_DLLS := \
libgdk-3-0.dll \
libgtk-3-0.dll \
libharfbuzz-0.dll \
libepoxy-0.dll \
libgraphite2.dll \
libpangoft2-1.0-0.dll \
libthai-0.dll \
libdatrie-1.dll \
libunistring-5.dll \
librsvg-2-2.dll
install-env-default-fcmp: install-env-common
cp -R $(addprefix $(DLLPATH_PREFIX), $(DEFAULT_FCMP_DLLS)) $(INST_DIR)/$(WINARCH)-$(GUI)/
# Add additional GTK+3 files
mkdir -p $(INST_DIR)/$(WINARCH)-$(GUI)/etc
cp -R /$(ARCHDIR)/etc/gtk-3.0 $(INST_DIR)/$(WINARCH)-$(GUI)/etc/
mkdir -p $(INST_DIR)/$(WINARCH)-$(GUI)/share/icons
cp -R /$(ARCHDIR)/share/icons/Adwaita $(INST_DIR)/$(WINARCH)-$(GUI)/share/icons/
mkdir -p $(INST_DIR)/$(WINARCH)-$(GUI)/share/glib-2.0/schemas
cp /$(ARCHDIR)/share/glib-2.0/schemas/gschemas.compiled $(INST_DIR)/$(WINARCH)-$(GUI)/share/glib-2.0/schemas/
mkdir -p $(INST_DIR)/$(WINARCH)-$(GUI)/lib/gtk-3.0/
cp -R /$(ARCHDIR)/lib/gtk-3.0/* $(INST_DIR)/$(WINARCH)-$(GUI)/lib/gtk-3.0/
mkdir -p $(INST_DIR)/$(WINARCH)-$(GUI)/lib/gdk-pixbuf-2.0/
cp -R /$(ARCHDIR)/lib/gdk-pixbuf-2.0/* $(INST_DIR)/$(WINARCH)-$(GUI)/lib/gdk-pixbuf-2.0/
cp -R /$(ARCHDIR)/share/locale $(INST_DIR)/$(WINARCH)-$(GUI)/share/
find $(INST_DIR)/$(WINARCH)-$(GUI)/share/locale -type f -not -name "freeciv-*.mo" -and -not -name gtk30.mo -delete
install-env-gtk3.22: install-env-default-fcmp
GTK4_FCMP_DLLS := \
libgtk-4-1.dll \
libcairo-script-interpreter-2.dll \
libepoxy-0.dll \
libgraphene-1.0-0.dll \
libharfbuzz-0.dll \
libpangoft2-1.0-0.dll \
libunistring-5.dll \
libthai-0.dll \
liblzo2-2.dll \
libgraphite2.dll \
libdatrie-1.dll \
libtiff-6.dll \
libjpeg-8.dll \
libLerc.dll \
libwebp-7.dll \
libdeflate.dll \
libjbig-0.dll \
libsharpyuv-0.dll
install-env-gtk4-fcmp: install-env-common
cp -R $(addprefix $(DLLPATH_PREFIX), $(GTK4_FCMP_DLLS)) $(INST_DIR)/$(WINARCH)-$(GUI)/
# Add additional GTK4 files
cp /$(ARCHDIR)/bin/gdbus.exe $(INST_DIR)/$(WINARCH)-$(GUI)/
mkdir -p $(INST_DIR)/$(WINARCH)-$(GUI)/lib/gdk-pixbuf-2.0/
cp -R /$(ARCHDIR)/lib/gdk-pixbuf-2.0/* $(INST_DIR)/$(WINARCH)-$(GUI)/lib/gdk-pixbuf-2.0/
cp -R /$(ARCHDIR)/share/locale $(INST_DIR)/$(WINARCH)-$(GUI)/share/
find $(INST_DIR)/$(WINARCH)-$(GUI)/share/locale -type f -not -name "freeciv-*.mo" -and -not -name gtk40.mo -delete
install-env-gtk4: install-env-gtk4-fcmp
SDL2_DLLS := \
libSDL2_gfx-1-0-0.dll \
SDL2_image.dll \
SDL2_ttf.dll \
libzstd.dll \
libjxl.dll \
libbrotlienc.dll \
libhwy.dll \
libavif-16.dll \
libwebpdemux-2.dll \
libjxl_cms.dll \
libaom.dll \
libdav1d-7.dll \
rav1e.dll \
libSvtAv1Enc-2.dll \
libyuv.dll
install-env-sdl2: install-env-gtk4-fcmp
# Add DLLs
cp -R $(addprefix $(DLLPATH_PREFIX), $(SDL2_DLLS)) $(INST_DIR)/$(WINARCH)-$(GUI)/
QT5_DLLS := \
libicuin${ICUVER}.dll \
libicuuc${ICUVER}.dll \
libicudt${ICUVER}.dll \
libharfbuzz-0.dll \
libsqlite3-0.dll \
Qt5Core.dll \
Qt5Gui.dll \
Qt5Widgets.dll \
libgraphite2.dll \
libpcre2-8-0.dll \
libpcre2-16-0.dll \
libunistring-5.dll \
libbrotlidec.dll \
libbrotlicommon.dll \
libdouble-conversion.dll \
libzstd.dll \
libmd4c.dll
install-env-qt5: install-env-common
# Add DLLs
cp -R $(addprefix $(DLLPATH_PREFIX), $(QT5_DLLS)) $(INST_DIR)/$(WINARCH)-$(GUI)/
# Add additional Qt5 files
cp -R /$(ARCHDIR)/share/qt5/plugins $(INST_DIR)/$(WINARCH)-$(GUI)/
cp -R /$(ARCHDIR)/share/locale $(INST_DIR)/$(WINARCH)-$(GUI)/share/
find $(INST_DIR)/$(WINARCH)-$(GUI)/share/locale -type f -not -name "freeciv-*.mo" -delete
QT6_DLLS := \
libicuin${ICUVER}.dll \
libicuuc${ICUVER}.dll \
libicudt${ICUVER}.dll \
Qt6Core.dll \
Qt6Gui.dll \
Qt6Widgets.dll \
libunistring-5.dll \
libpcre2-16-0.dll \
libharfbuzz-0.dll \
libgraphite2.dll \
libdouble-conversion.dll \
libmd4c.dll \
libb2-1.dll
install-env-qt6: install-env-common
# Add DLLs
cp -R $(addprefix $(DLLPATH_PREFIX), $(QT6_DLLS)) $(INST_DIR)/$(WINARCH)-$(GUI)/
# Add additional Qt6 files
cp -R /$(ARCHDIR)/share/qt6/plugins $(INST_DIR)/$(WINARCH)-$(GUI)/
cp -R /$(ARCHDIR)/share/locale $(INST_DIR)/$(WINARCH)-$(GUI)/share/
find $(INST_DIR)/$(WINARCH)-$(GUI)/share/locale -type f -not -name "freeciv-*.mo" -delete
RULEDIT_QT5_DLLS := \
libstdc++-6.dll \
libcrypto-${CRYPTOVERSUF}.dll \
libpsl-5.dll \
libssl-${CRYPTOVERSUF}.dll \
libidn2-0.dll \
libnghttp2-14.dll \
libnghttp3-9.dll \
libssh2-1.dll \
libcurl-4.dll \
libgmp-10.dll \
libp11-kit-0.dll \
libtasn1-6.dll \
libatk-1.0-0.dll \
libbz2-1.dll \
libcairo-2.dll \
libcairo-gobject-2.dll \
libffi-${FFIVER}.dll \
libfontconfig-1.dll \
libfreetype-6.dll \
$(LIBGCCDLL) \
libglib-2.0-0.dll \
libgdk_pixbuf-2.0-0.dll \
libgio-2.0-0.dll \
libiconv-2.dll \
libintl-8.dll \
liblzma-5.dll \
libpango-1.0-0.dll \
libpangocairo-1.0-0.dll \
libpangowin32-1.0-0.dll \
libpixman-1-0.dll \
libpng16-16.dll \
libxml2-2.dll \
zlib1.dll \
libwinpthread-1.dll \
libgraphite2.dll \
libdouble-conversion.dll \
libzstd.dll \
libMagickWand-${MAGICKVER}.dll \
libMagickCore-${MAGICKVER}.dll \
libgomp-1.dll \
libfftw3-3.dll \
liblcms2-2.dll \
liblqr-1-0.dll \
libltdl-7.dll \
libraqm-0.dll \
libexpat-1.dll \
libfribidi-0.dll \
libmd4c.dll
install-env-ruledit-qt5:
# Add DLLs
cp -R $(addprefix $(DLLPATH_PREFIX), $(RULEDIT_QT5_DLLS)) $(INST_DIR)/$(WINARCH)-ruledit-qt5/
cp -R $(addprefix $(DLLPATH_PREFIX), $(QT5_DLLS)) $(INST_DIR)/$(WINARCH)-ruledit-qt5/
# Add additional Qt files
cp -R /$(ARCHDIR)/share/qt5/plugins $(INST_DIR)/$(WINARCH)-ruledit-qt5/
cp -R /usr/share/locale $(INST_DIR)/$(WINARCH)-ruledit-qt5/share/
find $(INST_DIR)/$(WINARCH)-ruledit-qt5/share/locale -type f -not -name "freeciv-*.mo" -delete
RULEDIT_QT6_DLLS := \
libstdc++-6.dll \
libcrypto-${CRYPTOVERSUF}.dll \
libpsl-5.dll \
libssl-${CRYPTOVERSUF}.dll \
libidn2-0.dll \
libnghttp2-14.dll \
libnghttp3-9.dll \
libssh2-1.dll \
libcurl-4.dll \
libgmp-10.dll \
libp11-kit-0.dll \
libtasn1-6.dll \
libatk-1.0-0.dll \
libbz2-1.dll \
libcairo-2.dll \
libcairo-gobject-2.dll \
libffi-${FFIVER}.dll \
libfontconfig-1.dll \
libfreetype-6.dll \
$(LIBGCCDLL) \
libglib-2.0-0.dll \
libgdk_pixbuf-2.0-0.dll \
libgio-2.0-0.dll \
libiconv-2.dll \
libintl-8.dll \
liblzma-5.dll \
libpango-1.0-0.dll \
libpangocairo-1.0-0.dll \
libpangowin32-1.0-0.dll \
libpixman-1-0.dll \
libpng16-16.dll \
libxml2-2.dll \
zlib1.dll \
libwinpthread-1.dll \
libgraphite2.dll \
libpcre2-8-0.dll \
libdouble-conversion.dll \
libzstd.dll \
libMagickWand-${MAGICKVER}.dll \
libMagickCore-${MAGICKVER}.dll \
libgomp-1.dll \
libfftw3-3.dll \
liblcms2-2.dll \
liblqr-1-0.dll \
libltdl-7.dll \
libraqm-0.dll \
libexpat-1.dll \
libfribidi-0.dll \
libsqlite3-0.dll \
libbrotlidec.dll \
libbrotlicommon.dll
install-env-ruledit-qt6:
# Add DLLs
cp -R $(addprefix $(DLLPATH_PREFIX), $(RULEDIT_QT6_DLLS)) $(INST_DIR)/$(WINARCH)-ruledit-qt6/
cp -R $(addprefix $(DLLPATH_PREFIX), $(QT6_DLLS)) $(INST_DIR)/$(WINARCH)-ruledit-qt6/
# Add additional Qt files
cp -R /$(ARCHDIR)/share/qt6/plugins $(INST_DIR)/$(WINARCH)-ruledit-qt6/
cp -R /usr/share/locale $(INST_DIR)/$(WINARCH)-ruledit-qt6/share/
find $(INST_DIR)/$(WINARCH)-ruledit-qt6/share/locale -type f -not -name "freeciv-*.mo" -delete
# Build installer
installer-common: install-freeciv-$(GUI) install-env-$(GUI)
# Extract Freeciv version
$(eval FREECIV_VERSION := $(shell $(SRC_ROOT)/fc_version))
# Create NSIS script
mkdir -p $(NSI_DIR)
./create-freeciv-$(GUI)-nsi.sh $(INST_DIR)/$(WINARCH)-$(GUI) $(OUT_DIR) $(FREECIV_VERSION) $(WINARCH) > $(NSI_DIR)/$(WINARCH)-$(FREECIV_VERSION)-$(GUI).nsi
# Create installer executable
mkdir -p $(OUT_DIR)
makensis -NOCD $(NSI_DIR)/$(WINARCH)-$(FREECIV_VERSION)-$(GUI).nsi
installer-ruledit-qt5: clean-install-ruledit-qt5 install-ruledit-qt5 install-env-ruledit-qt5
# Extract Freeciv version
$(eval FREECIV_VERSION := $(shell $(SRC_ROOT)/fc_version))
# Create NSIS script
mkdir -p $(NSI_DIR)
./create-freeciv-ruledit-nsi.sh $(INST_DIR)/$(WINARCH)-ruledit-qt5 $(OUT_DIR) $(FREECIV_VERSION) $(WINARCH) > $(NSI_DIR)/$(WINARCH)-$(FREECIV_VERSION)-ruledit-qt5.nsi
# Create installer executable
mkdir -p $(OUT_DIR)
makensis -NOCD $(NSI_DIR)/$(WINARCH)-$(FREECIV_VERSION)-ruledit-qt5.nsi
installer-ruledit-qt6: clean-install-ruledit-qt6 install-ruledit-qt6 install-env-ruledit-qt6
# Extract Freeciv version
$(eval FREECIV_VERSION := $(shell $(SRC_ROOT)/fc_version))
# Create NSIS script
mkdir -p $(NSI_DIR)
./create-freeciv-ruledit-nsi.sh $(INST_DIR)/$(WINARCH)-ruledit-qt6 $(OUT_DIR) $(FREECIV_VERSION) $(WINARCH) > $(NSI_DIR)/$(WINARCH)-$(FREECIV_VERSION)-ruledit-qt6.nsi
# Create installer executable
mkdir -p $(OUT_DIR)
makensis -NOCD $(NSI_DIR)/$(WINARCH)-$(FREECIV_VERSION)-ruledit-qt6.nsi
wrap-gtk3.22: installer-common
wrap-gtk4: installer-common
wrap-sdl2: installer-common
wrap-qt5: installer-common
wrap-qt6: installer-common
wrap-ruledit-qt5: installer-ruledit-qt5
wrap-ruledit-qt6: installer-ruledit-qt6
# Cleanup
clean-build-common:
rm -rf $(BUILD_DIR)/*-$(GUI)
clean-build-ruledit-qt5:
rm -rf $(BUILD_DIR)/*-ruledit-qt5
clean-build-ruledit-qt6:
rm -rf $(BUILD_DIR)/*-ruledit-qt6
clean-install-common:
rm -rf $(INST_DIR)/*-$(GUI)
./cleanup_checkout.sh $(SRC_ROOT)
clean-install-ruledit-qt5:
rm -rf $(INST_DIR)/ruledit-qt5
./cleanup_checkout.sh $(SRC_ROOT)
clean-install-ruledit-qt6:
rm -rf $(INST_DIR)/ruledit-qt6
./cleanup_checkout.sh $(SRC_ROOT)
clean-installer-common:
rm -f $(OUT_DIR)/Freeciv-*-$(GUI)-setup.exe
rm -f $(NSI_DIR)/*-$(GUI).nsi
clean-installer-ruledit-qt5:
rm -f $(OUT_DIR)/Freeciv-ruledit-*-setup.exe
rm -f $(NSI_DIR)/*-ruledit-qt5.nsi
clean-installer-ruledit-qt6:
rm -f $(OUT_DIR)/Freeciv-ruledit-*-setup.exe
rm -f $(NSI_DIR)*-ruledit-qt6.nsi
clean:
make -f $(MAKEFILE_NAME) GUI=gtk3.22 CLIENT=gtk3.22 clean-build-common clean-install-common clean-installer-common
make -f $(MAKEFILE_NAME) GUI=gtk4 CLIENT=gtk4 clean-build-common clean-install-common clean-installer-common
make -f $(MAKEFILE_NAME) GUI=sdl2 CLIENT=sdl2 clean-build-common clean-install-common clean-installer-common
make -f $(MAKEFILE_NAME) GUI=qt5 CLIENT=qt clean-build-common clean-install-common clean-installer-common
make -f $(MAKEFILE_NAME) GUI=qt6 CLIENT=qt clean-build-common clean-install-common clean-installer-common
make -f $(MAKEFILE_NAME) clean-build-ruledit-qt5 clean-install-ruledit-qt5 clean-installer-ruledit-qt5
make -f $(MAKEFILE_NAME) clean-build-ruledit-qt6 clean-install-ruledit-qt6 clean-installer-ruledit-qt6
platforms/windows/installer_msys2/cleanup_checkout.sh
#!/bin/sh
if test "${VERSION_REVTYPE}" = "git" ; then
git checkout "$1/translations"
fi
    (1-1/1)