[vlc-devel] [PATCH 1/5] contrib: detect the pkg-config variant to use when cross-compiling

Steve Lhomme robux4 at ycbcr.xyz
Fri Feb 14 13:37:49 CET 2020


And use it for all contribs detection and building.

on Debian, the x86_64-w64-mingw32-pkg-config may exist and run but give an
error when actually trying to find a package because the package architecture
doesn't exist for that target. So we have to test it thoroughly.

If we revert to pkg-config when cross-compiling we also force the
PKG_CONFIG_LIBDIR, otherwise we leave it untouched as the system/environment may
provide more that we know.

Both /usr/$(HOST)/lib/pkgconfig and /usr/lib/$(HOST)/pkgconfig variants exist,
at least on Debian.
---
 contrib/src/main.mak | 28 +++++++++++++++++++++++-----
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/contrib/src/main.mak b/contrib/src/main.mak
index 849b69ffba0..73d23d0018f 100644
--- a/contrib/src/main.mak
+++ b/contrib/src/main.mak
@@ -90,6 +90,9 @@ endif
 ifneq ($(findstring $(origin WINDRES),undefined default),)
 WINDRES := windres
 endif
+ifneq ($(findstring $(origin PKG_CONFIG),undefined default),)
+PKG_CONFIG := pkg-config
+endif
 else
 ifneq ($(findstring $(origin CC),undefined default),)
 CC := $(HOST)-gcc
@@ -115,6 +118,24 @@ endif
 ifneq ($(findstring $(origin WINDRES),undefined default),)
 WINDRES := $(HOST)-windres
 endif
+
+ifneq ($(findstring $(origin PKG_CONFIG),undefined default),)
+# On Debian x86_64-w64-mingw32-pkg-config exists, runs but returns an error when checking packages
+ifeq ($(shell unset PKG_CONFIG_LIBDIR; $(HOST)-pkg-config --version 1>/dev/null 2>/dev/null || echo FAIL),)
+PKG_CONFIG := $(HOST)-pkg-config
+else
+# Use the regular pkg-config and set some PKG_CONFIG_LIBDIR ourselves
+PKG_CONFIG := pkg-config
+ifeq ($(findstring $(origin PKG_CONFIG_LIBDIR),undefined default),)
+# an extra PKG_CONFIG_LIBDIR was provided, use it prioritarily
+PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/$(HOST)/lib/pkgconfig:/usr/lib/$(HOST)/pkgconfig
+else
+PKG_CONFIG_LIBDIR := /usr/$(HOST)/lib/pkgconfig:/usr/lib/$(HOST)/pkgconfig
+endif
+export PKG_CONFIG_LIBDIR
+endif
+endif
+
 endif
 
 ifdef HAVE_ANDROID
@@ -224,13 +245,10 @@ export ACLOCAL_AMFLAGS
 # Tools #
 #########
 
-PKG_CONFIG ?= pkg-config
 ifdef HAVE_CROSS_COMPILE
 # This inhibits .pc file from within the cross-compilation toolchain sysroot.
 # Hopefully, nobody ever needs that.
 PKG_CONFIG_PATH := /usr/share/pkgconfig
-PKG_CONFIG_LIBDIR := /usr/$(HOST)/lib/pkgconfig:/usr/lib/$(HOST)/pkgconfig
-export PKG_CONFIG_LIBDIR
 endif
 PKG_CONFIG_PATH := $(PREFIX)/lib/pkgconfig:$(PKG_CONFIG_PATH)
 ifeq ($(findstring mingw32,$(BUILD)),mingw32)
@@ -315,7 +333,8 @@ endif
 HOSTTOOLS := \
 	CC="$(CC)" CXX="$(CXX)" LD="$(LD)" \
 	AR="$(AR)" CCAS="$(CCAS)" RANLIB="$(RANLIB)" STRIP="$(STRIP)" \
-	PATH="$(PREFIX)/bin:$(PATH)"
+	PATH="$(PREFIX)/bin:$(PATH)" \
+	PKG_CONFIG="$(PKG_CONFIG)"
 
 HOSTVARS_MESON := $(HOSTTOOLS) \
 	CPPFLAGS="$(CPPFLAGS)" \
@@ -611,7 +630,6 @@ endif
 ifdef HAVE_CROSS_COMPILE
 	echo "set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> $@
 	echo "set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> $@
-	echo "set(PKG_CONFIG_EXECUTABLE $(PKG_CONFIG))" >> $@
 endif
 
 MESON_SYSTEM_NAME =
-- 
2.17.1



More information about the vlc-devel mailing list