From: Helmut Grohne Date: Tue, 5 Jan 2021 21:25:00 +0000 (+0100) Subject: Improve cross-compile support X-Git-Tag: archive/raspbian/1%2.3.21.1+dfsg1-1+rpi1^2~12 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=fb8c7dae777083709590dfbd922ddaee65499048;p=dovecot.git Improve cross-compile support 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 --- diff --git a/m4/want_mysql.m4 b/m4/want_mysql.m4 index 98e6f93..425bcdd 100644 --- a/m4/want_mysql.m4 +++ b/m4/want_mysql.m4 @@ -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 + ]) ]) diff --git a/src/lib-lua/Makefile.am b/src/lib-lua/Makefile.am index 3416489..e1237a5 100644 --- a/src/lib-lua/Makefile.am +++ b/src/lib-lua/Makefile.am @@ -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) \