From b35da9dd13f42a21190262ace1574c3a81f48bec Mon Sep 17 00:00:00 2001 From: Tony Theodore Date: Thu, 15 Jun 2017 21:16:43 +1000 Subject: [PATCH 1/6] pkgconf: enable PKG_CONFIG_SYSTEM_INCLUDE_PATH environment variable from #1785 --- src/pkgconf-1-fixes.patch | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/pkgconf-1-fixes.patch diff --git a/src/pkgconf-1-fixes.patch b/src/pkgconf-1-fixes.patch new file mode 100644 index 00000000..9ed65e55 --- /dev/null +++ b/src/pkgconf-1-fixes.patch @@ -0,0 +1,50 @@ +This file is part of MXE. See LICENSE.md for licensing information. + +Contains ad hoc patches for cross building. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tony Theodore +Date: Thu, 15 Jun 2017 21:05:31 +1000 +Subject: [PATCH] main: support undocumented PKG_CONFIG_SYSTEM_INCLUDE_PATH and + PKG_CONFIG_SYSTEM_LIBRARY_PATH environment variables. + +Backported from: +https://github.com/pkgconf/pkgconf/commit/7e6fa325eb668c3462981a16fb4c36270832e00f + +See: +https://github.com/mxe/mxe/pull/1785 + +diff --git a/main.c b/main.c +index 1111111..2222222 100644 +--- a/main.c ++++ b/main.c +@@ -56,16 +56,27 @@ static char *sysroot_dir = NULL; + + FILE *error_msgout = NULL; + ++static char * ++fallback_getenv(const char *envname, const char *fallback) ++{ ++ const char *data = getenv(envname); ++ ++ if (data == NULL) ++ data = fallback; ++ ++ return strdup(data); ++} ++ + static bool + fragment_has_system_dir(pkg_fragment_t *frag) + { + switch (frag->type) + { + case 'L': +- if ((want_flags & PKG_KEEP_SYSTEM_CFLAGS) == 0 && !strcasecmp(SYSTEM_LIBDIR, frag->data)) ++ if ((want_flags & PKG_KEEP_SYSTEM_CFLAGS) == 0 && !strcasecmp(fallback_getenv("PKG_CONFIG_SYSTEM_LIBRARY_PATH", SYSTEM_LIBDIR), frag->data)) + return true; + case 'I': +- if ((want_flags & PKG_KEEP_SYSTEM_LIBS) == 0 && !strcasecmp(SYSTEM_INCLUDEDIR, frag->data)) ++ if ((want_flags & PKG_KEEP_SYSTEM_LIBS) == 0 && !strcasecmp(fallback_getenv("PKG_CONFIG_SYSTEM_INCLUDE_PATH", SYSTEM_INCLUDEDIR), frag->data)) + return true; + default: + break; From b2c66b31913cb6d01243795806954d6701e5c6b4 Mon Sep 17 00:00:00 2001 From: Tony Theodore Date: Thu, 15 Jun 2017 21:33:55 +1000 Subject: [PATCH 2/6] pkgconf: use PKG_CONFIG_SYSTEM_INCLUDE_PATH in wrapper --- src/pkgconf.mk | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pkgconf.mk b/src/pkgconf.mk index 49f363ae..2bdab5f0 100644 --- a/src/pkgconf.mk +++ b/src/pkgconf.mk @@ -21,7 +21,10 @@ endef define $(PKG)_BUILD # create pkg-config script (echo '#!/bin/sh'; \ - echo 'PKG_CONFIG_PATH="$(PREFIX)/$(TARGET)/qt5/lib/pkgconfig":"$$PKG_CONFIG_PATH_$(subst .,_,$(subst -,_,$(TARGET)))" PKG_CONFIG_LIBDIR='\''$(PREFIX)/$(TARGET)/lib/pkgconfig'\'' exec '$(PREFIX)/$(BUILD)/bin/pkgconf' $(if $(BUILD_STATIC),--static) "$$@"') \ + echo 'PKG_CONFIG_PATH="$(PREFIX)/$(TARGET)/qt5/lib/pkgconfig":"$$PKG_CONFIG_PATH_$(subst .,_,$(subst -,_,$(TARGET)))" \ + PKG_CONFIG_LIBDIR="$(PREFIX)/$(TARGET)/lib/pkgconfig" \ + PKG_CONFIG_SYSTEM_INCLUDE_PATH="$(PREFIX)/$(TARGET)/include" \ + exec "$(PREFIX)/$(BUILD)/bin/pkgconf" $(if $(BUILD_STATIC),--static) "$$@"') \ > '$(PREFIX)/bin/$(TARGET)-pkg-config' chmod 0755 '$(PREFIX)/bin/$(TARGET)-pkg-config' From 49c892298d4d0624bfb8a0ad212950c9ec474dc1 Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Fri, 16 Jun 2017 09:07:53 +0200 Subject: [PATCH 3/6] correct PKG_CONFIG_LIBDIR for qtbase --- src/qtbase.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qtbase.mk b/src/qtbase.mk index f7453c94..3302e474 100644 --- a/src/qtbase.mk +++ b/src/qtbase.mk @@ -27,7 +27,7 @@ define $(PKG)_BUILD SYBASE_LIBS="-lsybdb `'$(TARGET)-pkg-config' --libs-only-l gnutls` -liconv -lws2_32" \ PKG_CONFIG="${TARGET}-pkg-config" \ PKG_CONFIG_SYSROOT_DIR="/" \ - PKG_CONFIG_LIBDIR="$(PREFIX)/$(TARGET)/lib/pc" \ + PKG_CONFIG_LIBDIR="$(PREFIX)/$(TARGET)/lib/pkgconfig" \ ./configure \ -opensource \ -confirm-license \ From ede738758e34fca6bff735e472d63e5e06024654 Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Fri, 16 Jun 2017 09:10:12 +0200 Subject: [PATCH 4/6] qtbase: prevent extra leading / on system include and lib directories PKG_CONFIG_SYSROOT should not be set because MXE uses fully qualified paths. However, to satisfy the Qt build system's cross-compiling "sanity check", qtbase.mk defines PKG_CONFIG_SYSROOT_DIR=/ This causes pkg-config to prefix the system include and library paths with an extra /. Pkg-config does not strip these prefixed paths from --cflags and --libs output. The workaround here is to remove the PKG_CONFIG_SYSROOT_DIR definition in the wrapper script for pkg-config. --- src/pkgconf.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pkgconf.mk b/src/pkgconf.mk index 2bdab5f0..14a67bd9 100644 --- a/src/pkgconf.mk +++ b/src/pkgconf.mk @@ -22,6 +22,7 @@ define $(PKG)_BUILD # create pkg-config script (echo '#!/bin/sh'; \ echo 'PKG_CONFIG_PATH="$(PREFIX)/$(TARGET)/qt5/lib/pkgconfig":"$$PKG_CONFIG_PATH_$(subst .,_,$(subst -,_,$(TARGET)))" \ + PKG_CONFIG_SYSROOT_DIR= \ PKG_CONFIG_LIBDIR="$(PREFIX)/$(TARGET)/lib/pkgconfig" \ PKG_CONFIG_SYSTEM_INCLUDE_PATH="$(PREFIX)/$(TARGET)/include" \ exec "$(PREFIX)/$(BUILD)/bin/pkgconf" $(if $(BUILD_STATIC),--static) "$$@"') \ From b72e1a3f85cc4be6732bbce0c9092ef6b887cbf1 Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Fri, 16 Jun 2017 11:42:54 +0200 Subject: [PATCH 5/6] Avoid extra mentions of system library path when linking Normally pkg-config would remove the system library path from --libs output. Defining PKG_CONFIG_SYSTEM_LIBRARY_PATH helps it do so. The extra mentions of system library path in the linking commands is unsightly but probabaly harmless. --- src/pkgconf.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pkgconf.mk b/src/pkgconf.mk index 14a67bd9..5b462670 100644 --- a/src/pkgconf.mk +++ b/src/pkgconf.mk @@ -25,6 +25,7 @@ define $(PKG)_BUILD PKG_CONFIG_SYSROOT_DIR= \ PKG_CONFIG_LIBDIR="$(PREFIX)/$(TARGET)/lib/pkgconfig" \ PKG_CONFIG_SYSTEM_INCLUDE_PATH="$(PREFIX)/$(TARGET)/include" \ + PKG_CONFIG_SYSTEM_LIBRARY_PATH="$(PREFIX)/$(TARGET)/lib" \ exec "$(PREFIX)/$(BUILD)/bin/pkgconf" $(if $(BUILD_STATIC),--static) "$$@"') \ > '$(PREFIX)/bin/$(TARGET)-pkg-config' chmod 0755 '$(PREFIX)/bin/$(TARGET)-pkg-config' From b8df830562aa062201d4cb02c61e1f2004c2300e Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Fri, 16 Jun 2017 12:23:11 +0200 Subject: [PATCH 6/6] Revert "sqlite: don't add standard include path to Cflags" No longer necessary since PKG_CONFIG_SYSTEM_INCLUDE_PATH is set. This reverts commit 43214bf7e886bd310965f854dd3a37b64c685bfa. --- src/sqlite.mk | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/sqlite.mk b/src/sqlite.mk index 01a876b3..d317d717 100644 --- a/src/sqlite.mk +++ b/src/sqlite.mk @@ -18,9 +18,6 @@ define $(PKG)_UPDATE endef define $(PKG)_BUILD - # The system include path doesn't belong in CFLAGS - # Causes problems like https://gitlab.kitware.com/cmake/cmake/issues/16919 - $(SED) -i 's/^Cflags/#Cflags/;' '$(1)/sqlite3.pc.in' cd '$(1)' && ./configure \ $(MXE_CONFIGURE_OPTS) \ --disable-readline \