MINGW-packages/mingw-w64-aalib/0002-configure-src-tweak-Windows-link-flags.patch
2022-03-29 01:10:07 +05:30

120 lines
3.7 KiB
Diff

From a50637c4d5f8b91bfbd9434ad0484387282d1ae9 Mon Sep 17 00:00:00 2001
From: Jehan <jehan@girinstud.io>
Date: Sun, 16 May 2021 17:06:56 +0200
Subject: [PATCH] configure, src: tweak Windows link flags.
- libws2_32 is needed on Windows for the select() function.
- Without flag -no-undefined, the build still succeeds but fails to
build the shared library and outputs:
> libtool: warning: undefined symbols not allowed in x86_64-w64-mingw32 shared libraries; building static only
Also adding some specific Windows detection code in the configure file
and disabling some Linux-specific (apparently) paths (LINUX_DRIVER and
LINUX_KBDDRIVER) as well as some X11 paths (X11_KBDDRIVER and
X11_MOUSEDRIVER). I am not actually sure if these are really about
building **for** Linux/X11 or **on** Linux/X11, especially because
existing test on $system was actually looking at the build machine, not
the host/target. But that may just be non-generic code which didn't
expect cross-building (which is anyway a case where I failed to build
without this change). For now let's just disable these code paths when
building for Windows and not bother too much.
---
configure.in | 30 ++++++++++++++++++++++--------
src/Makefile.am | 7 ++++++-
2 files changed, 28 insertions(+), 9 deletions(-)
diff --git a/configure.in b/configure.in
index 78806dc..27c133c 100644
--- a/configure.in
+++ b/configure.in
@@ -366,6 +366,9 @@ case "$target" in
*-*-solaris*)
ARCH=solaris
;;
+ *-*-mingw32*)
+ ARCH=windows
+ ;;
*)
ARCH=other
;;
@@ -388,6 +391,9 @@ AC_SUBST(AALIB_LIBS)
AC_SUBST(AALIB_RLD_FLAGS)
AC_SUBST(XCURSES)
+# Windows needs some tweaking.
+AM_CONDITIONAL(PLATFORM_WIN32, test "$ARCH" = "windows")
+
# Set conditional variables for shared and static library selection.
# These are not used in any Makefile.am but in sdl-config.in.
AM_CONDITIONAL([ENABLE_SHARED], [test "$enable_shared" = yes])
@@ -423,26 +429,34 @@ if test "$curses_driver" = true; then
fi
if test "$linux_driver_test" = yes; then
if test "x$system" = xLinux; then
- echo " Linux console"
- AC_DEFINE(LINUX_DRIVER)
- AC_DEFINE(LINUX_KBDDRIVER)
+ if test $ARCH != windows; then
+ echo " Linux console"
+ AC_DEFINE(LINUX_DRIVER)
+ AC_DEFINE(LINUX_KBDDRIVER)
+ fi
fi
fi
if test "$x_driver" = true; then
echo " x11"
if test "$x_kbddriver_test" = yes; then
- AC_DEFINE(X11_KBDDRIVER)
- x_kbddriver=true
+ if test $ARCH != windows; then
+ AC_DEFINE(X11_KBDDRIVER)
+ x_kbddriver=true
+ fi
fi
if test "$x_mousedriver_test" = yes; then
- AC_DEFINE(X11_MOUSEDRIVER)
- x_mousedriver=true
+ if test $ARCH != windows; then
+ AC_DEFINE(X11_MOUSEDRIVER)
+ x_mousedriver=true
+ fi
fi
fi
echo "Keyboard drivers:"
if test "$linux_driver_test" = yes; then
if test "x$system" = xLinux; then
- echo " Linux console"
+ if test $ARCH != windows; then
+ echo " Linux console"
+ fi
fi
fi
if test "$slang_kbddriver" = true; then
diff --git a/src/Makefile.am b/src/Makefile.am
index ad23666..3d63dc0 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,4 +1,9 @@
AUTOMAKE_OPTIONS = foreign #include-deps
+
+if PLATFORM_WIN32
+libaa_ldflags = -no-undefined -lws2_32
+endif
+
EXTRA_DIST = config.dos config.os2 Makefile.dos Makefile.os2 aados.c aadoskbd.c aadosmou.c aaos2.c aaos2kbd.c aaos2mou.c aaint.h aamktabl.h aaxint.h toc.c
lib_LTLIBRARIES=libaa.la
libaa_la_SOURCES= \
@@ -57,7 +62,7 @@ libaa_la_SOURCES= \
aaattrs.c \
aaputpixel.c \
aarecfunc.c
-libaa_la_LDFLAGS=@LDFLAGS@ -version-info 1:4:0
+libaa_la_LDFLAGS=@LDFLAGS@ -version-info 1:4:0 $(libaa_ldflags)
bin_PROGRAMS=aainfo aatest aafire aasavefont
aainfo_LDADD= libaa.la
--
2.31.1