Improve cross-compile support
authorHelmut Grohne <helmut@subdivi.de>
Tue, 5 Jan 2021 21:25:00 +0000 (22:25 +0100)
committerNoah Meyerhans <noahm@debian.org>
Sat, 17 Aug 2024 17:26:24 +0000 (13:26 -0400)
The check for the signedness of size_t really doesn't have to be run as
that is a compile time property.

Beyond that, dovecot uses mysql_config. I've looked into that and
mysql_config is unfixably broken during cross builds. It will not be
fixed. Instead, please use pkg-config. My patch implements that with a
fallback to mysql_config to avoid breaking other users.

Last but not least, src/lib-lua/Makefile.am adds $(LUA_LIBS) to
libdovecot_lua_la_DEPENDENCIES. As it happens, LUA_LIBS contains a -L
flag and when that flag shows up in a dependency, make gives up. I have
no clue why one would add LUA_LIBS to DEPENDENCIES as it already is
being correctly added to LIBADD. My patch suggests to quite simply drop
that.

Gbp-Pq: Name Improve-cross-compile-support.patch

m4/want_mysql.m4
src/lib-lua/Makefile.am

index 98e6f9371a0ad8d00428ccd6836e32695eb92a59..425bcdd06de375ca59df0519cd30e02d441fff5a 100644 (file)
@@ -1,26 +1,28 @@
 AC_DEFUN([DOVECOT_WANT_MYSQL], [
   have_mysql=no
-  if test $want_mysql != no; then
-    AC_CHECK_PROG(MYSQL_CONFIG, mysql_config, mysql_config, NO)
-    if test $MYSQL_CONFIG = NO; then
-       # based on code from PHP
-       MYSQL_LIBS="-lmysqlclient -lz -lm"
-       for i in /usr /usr/local /usr/local/mysql; do
-               for j in include include/mysql ""; do
-                       if test -r "$i/$j/mysql.h"; then
-                               MYSQL_INCLUDE="-I$i/$j"
-                       fi
-               done
-               for j in lib lib/mysql lib64 lib64/mysql ""; do
-                       if test -f "$i/$j/libmysqlclient.so" || test -f "$i/$j/libmysqlclient.a"; then
-                               MYSQL_LIBS="-L$i/$j -lmysqlclient -lz -lm"
-                       fi
-               done
-       done
-    else
-      MYSQL_INCLUDE="`$MYSQL_CONFIG --include`"
-      MYSQL_LIBS="`$MYSQL_CONFIG --libs`"
-    fi
+    AS_IF([test $want_mysql != no],[
+    PKG_CHECK_MODULES([MYSQL],[mysqlclient],,[
+      AC_CHECK_PROG(MYSQL_CONFIG, mysql_config, mysql_config, NO)
+      if test $MYSQL_CONFIG = NO; then
+       # based on code from PHP
+       MYSQL_LIBS="-lmysqlclient -lz -lm"
+       for i in /usr /usr/local /usr/local/mysql; do
+               for j in include include/mysql ""; do
+                       if test -r "$i/$j/mysql.h"; then
+                               MYSQL_CFLAGS="-I$i/$j"
+                       fi
+               done
+               for j in lib lib/mysql lib64 lib64/mysql ""; do
+                       if test -f "$i/$j/libmysqlclient.so" || test -f "$i/$j/libmysqlclient.a"; then
+                               MYSQL_LIBS="-L$i/$j -lmysqlclient -lz -lm"
+                       fi
+               done
+       done
+      else
+        MYSQL_CFLAGS="`$MYSQL_CONFIG --include`"
+        MYSQL_LIBS="`$MYSQL_CONFIG --libs`"
+      fi
+    ])
   
     old_LIBS=$LIBS
     if test "$MYSQL_LIBS" != ""; then
@@ -31,14 +33,10 @@ AC_DEFUN([DOVECOT_WANT_MYSQL], [
     LIBS="$LIBS -lz -lm"
     AC_CHECK_LIB(mysqlclient, mysql_init, [
                old_CPPFLAGS=$CPPFLAGS
-               if test "$MYSQL_INCLUDE" != ""; then
-                       CPPFLAGS="$CPPFLAGS $MYSQL_INCLUDE"
+               if test "$MYSQL_CFLAGS" != ""; then
+                       CPPFLAGS="$CPPFLAGS $MYSQL_CFLAGS"
                fi
                AC_CHECK_HEADER(mysql.h, [
-                       if test "$MYSQL_INCLUDE" != ""; then
-                               MYSQL_CFLAGS="$MYSQL_CFLAGS $MYSQL_INCLUDE"
-                       fi
-  
                        AC_CHECK_LIB(mysqlclient, mysql_ssl_set, [
                                AC_DEFINE(HAVE_MYSQL_SSL,, [Define if your MySQL library has SSL functions])
                                if test "x$have_openssl" = "yes"; then
@@ -85,5 +83,5 @@ AC_DEFUN([DOVECOT_WANT_MYSQL], [
       MYSQL_CFLAGS=
     fi
     LIBS=$old_LIBS
-  fi
+  ])
 ])
index 34164892fa905ddfaac915c7de7b1bb95d739878..e1237a59daa51698c020228808be50780840310a 100644 (file)
@@ -28,9 +28,7 @@ test_programs += test-dict-lua
 endif
 
 # Note: the only things this lib should depend on are libdovecot and lua.
-libdovecot_lua_la_DEPENDENCIES = \
-       ../lib-dovecot/libdovecot.la \
-       $(LIBDICT_LUA)
+libdovecot_lua_la_DEPENDENCIES = ../lib-dovecot/libdovecot.la
 libdovecot_lua_la_LIBADD = \
        ../lib-dovecot/libdovecot.la \
        $(LIBDICT_LUA) \