All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4] config: Allow kernel installation packaging to override pkg-config
@ 2022-03-06 22:30 Chun-Tse Shao
  2022-03-07 18:17 ` Nick Desaulniers
  0 siblings, 1 reply; 12+ messages in thread
From: Chun-Tse Shao @ 2022-03-06 22:30 UTC (permalink / raw)
  To: rostedt, ndesaulniers, nicolas, robh+dt
  Cc: Chun-Tse Shao, Masahiro Yamada, Michal Marek, David Howells,
	David Woodhouse, Frank Rowand, Josh Poimboeuf, Peter Zijlstra,
	linux-kbuild, linux-kernel, keyrings, devicetree

Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
what pkg-config and parameters are used.

Signed-off-by: Chun-Tse Shao <ctshao@google.com>
---
Changes from v3: https://lore.kernel.org/all/20220304041449.939308-1-ctshao@google.com
  - Dereference variables using {} instead of () in shell scripts
  - Tested with make allmodconfig

Changes from v2: https://lore.kernel.org/all/20220302193638.11034-1-ctshao@google.com/
  - Fix more open coded instance of pkg-config in scripts and certs
  - Tested with make allmodconfig

Changes from v1: https://lore.kernel.org/all/20220301230629.1892828-1-ctshao@google.com/
  - Make the commit message more clearer.
---
 Makefile                     |  3 ++-
 certs/Makefile               |  4 ++--
 scripts/Makefile             |  4 ++--
 scripts/dtc/Makefile         |  6 +++---
 scripts/kconfig/gconf-cfg.sh | 10 +++++-----
 scripts/kconfig/mconf-cfg.sh | 14 +++++++-------
 scripts/kconfig/nconf-cfg.sh | 14 +++++++-------
 scripts/kconfig/qconf-cfg.sh | 14 +++++++-------
 tools/objtool/Makefile       |  4 ++--
 9 files changed, 37 insertions(+), 36 deletions(-)

diff --git a/Makefile b/Makefile
index daeb5c88b50b..f6c5bef7e141 100644
--- a/Makefile
+++ b/Makefile
@@ -430,6 +430,7 @@ else
 HOSTCC	= gcc
 HOSTCXX	= g++
 endif
+HOSTPKG_CONFIG	= pkg-config

 export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
 			      -O2 -fomit-frame-pointer -std=gnu89
@@ -525,7 +526,7 @@ KBUILD_LDFLAGS_MODULE :=
 KBUILD_LDFLAGS :=
 CLANG_FLAGS :=

-export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
+export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG
 export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
 export PERL PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
 export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD
diff --git a/certs/Makefile b/certs/Makefile
index 3ea7fe60823f..fa540d14ef2d 100644
--- a/certs/Makefile
+++ b/certs/Makefile
@@ -89,5 +89,5 @@ targets += x509_revocation_list

 hostprogs := extract-cert

-HOSTCFLAGS_extract-cert.o = $(shell pkg-config --cflags libcrypto 2> /dev/null)
-HOSTLDLIBS_extract-cert = $(shell pkg-config --libs libcrypto 2> /dev/null || echo -lcrypto)
+HOSTCFLAGS_extract-cert.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null)
+HOSTLDLIBS_extract-cert = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto)
diff --git a/scripts/Makefile b/scripts/Makefile
index ce5aa9030b74..f084f08ed176 100644
--- a/scripts/Makefile
+++ b/scripts/Makefile
@@ -14,8 +14,8 @@ hostprogs-always-$(CONFIG_SYSTEM_EXTRA_CERTIFICATE)	+= insert-sys-cert
 HOSTCFLAGS_sorttable.o = -I$(srctree)/tools/include
 HOSTLDLIBS_sorttable = -lpthread
 HOSTCFLAGS_asn1_compiler.o = -I$(srctree)/include
-HOSTCFLAGS_sign-file.o = $(shell pkg-config --cflags libcrypto 2> /dev/null)
-HOSTLDLIBS_sign-file = $(shell pkg-config --libs libcrypto 2> /dev/null || echo -lcrypto)
+HOSTCFLAGS_sign-file.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null)
+HOSTLDLIBS_sign-file = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto)

 ifdef CONFIG_UNWINDER_ORC
 ifeq ($(ARCH),x86_64)
diff --git a/scripts/dtc/Makefile b/scripts/dtc/Makefile
index 95aaf7431bff..743fc08827ea 100644
--- a/scripts/dtc/Makefile
+++ b/scripts/dtc/Makefile
@@ -18,7 +18,7 @@ fdtoverlay-objs	:= $(libfdt) fdtoverlay.o util.o
 # Source files need to get at the userspace version of libfdt_env.h to compile
 HOST_EXTRACFLAGS += -I $(srctree)/$(src)/libfdt

-ifeq ($(shell pkg-config --exists yaml-0.1 2>/dev/null && echo yes),)
+ifeq ($(shell $(HOSTPKG_CONFIG) --exists yaml-0.1 2>/dev/null && echo yes),)
 ifneq ($(CHECK_DT_BINDING)$(CHECK_DTBS),)
 $(error dtc needs libyaml for DT schema validation support. \
 	Install the necessary libyaml development package.)
@@ -27,9 +27,9 @@ HOST_EXTRACFLAGS += -DNO_YAML
 else
 dtc-objs	+= yamltree.o
 # To include <yaml.h> installed in a non-default path
-HOSTCFLAGS_yamltree.o := $(shell pkg-config --cflags yaml-0.1)
+HOSTCFLAGS_yamltree.o := $(shell $(HOSTPKG_CONFIG) --cflags yaml-0.1)
 # To link libyaml installed in a non-default path
-HOSTLDLIBS_dtc	:= $(shell pkg-config yaml-0.1 --libs)
+HOSTLDLIBS_dtc	:= $(shell $(HOSTPKG_CONFIG) yaml-0.1 --libs)
 endif

 # Generated files need one more search path to include headers in source tree
diff --git a/scripts/kconfig/gconf-cfg.sh b/scripts/kconfig/gconf-cfg.sh
index 480ecd8b9f41..4da4e39dcb53 100755
--- a/scripts/kconfig/gconf-cfg.sh
+++ b/scripts/kconfig/gconf-cfg.sh
@@ -3,14 +3,14 @@

 PKG="gtk+-2.0 gmodule-2.0 libglade-2.0"

-if [ -z "$(command -v pkg-config)" ]; then
+if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
 	echo >&2 "*"
 	echo >&2 "* 'make gconfig' requires 'pkg-config'. Please install it."
 	echo >&2 "*"
 	exit 1
 fi

-if ! pkg-config --exists $PKG; then
+if ! ${HOSTPKG_CONFIG} --exists $PKG; then
 	echo >&2 "*"
 	echo >&2 "* Unable to find the GTK+ installation. Please make sure that"
 	echo >&2 "* the GTK+ 2.0 development package is correctly installed."
@@ -19,12 +19,12 @@ if ! pkg-config --exists $PKG; then
 	exit 1
 fi

-if ! pkg-config --atleast-version=2.0.0 gtk+-2.0; then
+if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then
 	echo >&2 "*"
 	echo >&2 "* GTK+ is present but version >= 2.0.0 is required."
 	echo >&2 "*"
 	exit 1
 fi

-echo cflags=\"$(pkg-config --cflags $PKG)\"
-echo libs=\"$(pkg-config --libs $PKG)\"
+echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
+echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh
index b520e407a8eb..05837ed07fbd 100755
--- a/scripts/kconfig/mconf-cfg.sh
+++ b/scripts/kconfig/mconf-cfg.sh
@@ -4,16 +4,16 @@
 PKG="ncursesw"
 PKG2="ncurses"

-if [ -n "$(command -v pkg-config)" ]; then
-	if pkg-config --exists $PKG; then
-		echo cflags=\"$(pkg-config --cflags $PKG)\"
-		echo libs=\"$(pkg-config --libs $PKG)\"
+if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
+	if ${HOSTPKG_CONFIG} --exists $PKG; then
+		echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
+		echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
 		exit 0
 	fi

-	if pkg-config --exists $PKG2; then
-		echo cflags=\"$(pkg-config --cflags $PKG2)\"
-		echo libs=\"$(pkg-config --libs $PKG2)\"
+	if ${HOSTPKG_CONFIG} --exists $PKG2; then
+		echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\"
+		echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\"
 		exit 0
 	fi
 fi
diff --git a/scripts/kconfig/nconf-cfg.sh b/scripts/kconfig/nconf-cfg.sh
index c212255070c0..e8d8f12d93ac 100755
--- a/scripts/kconfig/nconf-cfg.sh
+++ b/scripts/kconfig/nconf-cfg.sh
@@ -4,16 +4,16 @@
 PKG="ncursesw menuw panelw"
 PKG2="ncurses menu panel"

-if [ -n "$(command -v pkg-config)" ]; then
-	if pkg-config --exists $PKG; then
-		echo cflags=\"$(pkg-config --cflags $PKG)\"
-		echo libs=\"$(pkg-config --libs $PKG)\"
+if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
+	if ${HOSTPKG_CONFIG} --exists $PKG; then
+		echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
+		echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
 		exit 0
 	fi

-	if pkg-config --exists $PKG2; then
-		echo cflags=\"$(pkg-config --cflags $PKG2)\"
-		echo libs=\"$(pkg-config --libs $PKG2)\"
+	if ${HOSTPKG_CONFIG} --exists $PKG2; then
+		echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\"
+		echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\"
 		exit 0
 	fi
 fi
diff --git a/scripts/kconfig/qconf-cfg.sh b/scripts/kconfig/qconf-cfg.sh
index fa564cd795b7..9b695e5cd9b3 100755
--- a/scripts/kconfig/qconf-cfg.sh
+++ b/scripts/kconfig/qconf-cfg.sh
@@ -3,22 +3,22 @@

 PKG="Qt5Core Qt5Gui Qt5Widgets"

-if [ -z "$(command -v pkg-config)" ]; then
+if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
 	echo >&2 "*"
-	echo >&2 "* 'make xconfig' requires 'pkg-config'. Please install it."
+	echo >&2 "* 'make xconfig' requires '${HOSTPKG_CONFIG}'. Please install it."
 	echo >&2 "*"
 	exit 1
 fi

-if pkg-config --exists $PKG; then
-	echo cflags=\"-std=c++11 -fPIC $(pkg-config --cflags $PKG)\"
-	echo libs=\"$(pkg-config --libs $PKG)\"
-	echo moc=\"$(pkg-config --variable=host_bins Qt5Core)/moc\"
+if ${HOSTPKG_CONFIG} --exists $PKG; then
+	echo cflags=\"-std=c++11 -fPIC $(${HOSTPKG_CONFIG} --cflags $PKG)\"
+	echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
+	echo moc=\"$(${HOSTPKG_CONFIG} --variable=host_bins Qt5Core)/moc\"
 	exit 0
 fi

 echo >&2 "*"
-echo >&2 "* Could not find Qt5 via pkg-config."
+echo >&2 "* Could not find Qt5 via ${HOSTPKG_CONFIG}."
 echo >&2 "* Please install Qt5 and make sure it's in PKG_CONFIG_PATH"
 echo >&2 "*"
 exit 1
diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile
index 92ce4fce7bc7..549acc5859e9 100644
--- a/tools/objtool/Makefile
+++ b/tools/objtool/Makefile
@@ -19,8 +19,8 @@ LIBSUBCMD		= $(LIBSUBCMD_OUTPUT)libsubcmd.a
 OBJTOOL    := $(OUTPUT)objtool
 OBJTOOL_IN := $(OBJTOOL)-in.o

-LIBELF_FLAGS := $(shell pkg-config libelf --cflags 2>/dev/null)
-LIBELF_LIBS  := $(shell pkg-config libelf --libs 2>/dev/null || echo -lelf)
+LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
+LIBELF_LIBS  := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)

 all: $(OBJTOOL)

--
2.35.1.616.g0bdcbb4464-goog


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-03-06 22:30 [PATCH v4] config: Allow kernel installation packaging to override pkg-config Chun-Tse Shao
@ 2022-03-07 18:17 ` Nick Desaulniers
  2022-03-07 22:50   ` Chun-Tse Shao
  0 siblings, 1 reply; 12+ messages in thread
From: Nick Desaulniers @ 2022-03-07 18:17 UTC (permalink / raw)
  To: Chun-Tse Shao, Masahiro Yamada
  Cc: rostedt, nicolas, robh+dt, Michal Marek, David Howells,
	David Woodhouse, Frank Rowand, Josh Poimboeuf, Peter Zijlstra,
	linux-kbuild, linux-kernel, keyrings, devicetree

On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
>
> Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> what pkg-config and parameters are used.

Sorry, kind a late thought here for v4, but we don't seem to prefix
many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
PYTHON3, etc.  Maybe just having the variable identifier be simply
PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
list in the top level Makefile after ZSTD (i.e. the list of host
tools)?  There's HOST_ prefixes when there's more than one tool
involved (i.e. host compiler vs target compiler), but I suspect
there's no such distinction for the existing uses of pkg-config?

Otherwise, sorry for opening a bikeshed so late; this patch still LGTM.
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>

>
> Signed-off-by: Chun-Tse Shao <ctshao@google.com>
> ---
> Changes from v3: https://lore.kernel.org/all/20220304041449.939308-1-ctshao@google.com
>   - Dereference variables using {} instead of () in shell scripts
>   - Tested with make allmodconfig
>
> Changes from v2: https://lore.kernel.org/all/20220302193638.11034-1-ctshao@google.com/
>   - Fix more open coded instance of pkg-config in scripts and certs
>   - Tested with make allmodconfig
>
> Changes from v1: https://lore.kernel.org/all/20220301230629.1892828-1-ctshao@google.com/
>   - Make the commit message more clearer.
> ---
>  Makefile                     |  3 ++-
>  certs/Makefile               |  4 ++--
>  scripts/Makefile             |  4 ++--
>  scripts/dtc/Makefile         |  6 +++---
>  scripts/kconfig/gconf-cfg.sh | 10 +++++-----
>  scripts/kconfig/mconf-cfg.sh | 14 +++++++-------
>  scripts/kconfig/nconf-cfg.sh | 14 +++++++-------
>  scripts/kconfig/qconf-cfg.sh | 14 +++++++-------
>  tools/objtool/Makefile       |  4 ++--
>  9 files changed, 37 insertions(+), 36 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index daeb5c88b50b..f6c5bef7e141 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -430,6 +430,7 @@ else
>  HOSTCC = gcc
>  HOSTCXX        = g++
>  endif
> +HOSTPKG_CONFIG = pkg-config
>
>  export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
>                               -O2 -fomit-frame-pointer -std=gnu89
> @@ -525,7 +526,7 @@ KBUILD_LDFLAGS_MODULE :=
>  KBUILD_LDFLAGS :=
>  CLANG_FLAGS :=
>
> -export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
> +export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG
>  export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
>  export PERL PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
>  export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD
> diff --git a/certs/Makefile b/certs/Makefile
> index 3ea7fe60823f..fa540d14ef2d 100644
> --- a/certs/Makefile
> +++ b/certs/Makefile
> @@ -89,5 +89,5 @@ targets += x509_revocation_list
>
>  hostprogs := extract-cert
>
> -HOSTCFLAGS_extract-cert.o = $(shell pkg-config --cflags libcrypto 2> /dev/null)
> -HOSTLDLIBS_extract-cert = $(shell pkg-config --libs libcrypto 2> /dev/null || echo -lcrypto)
> +HOSTCFLAGS_extract-cert.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null)
> +HOSTLDLIBS_extract-cert = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto)
> diff --git a/scripts/Makefile b/scripts/Makefile
> index ce5aa9030b74..f084f08ed176 100644
> --- a/scripts/Makefile
> +++ b/scripts/Makefile
> @@ -14,8 +14,8 @@ hostprogs-always-$(CONFIG_SYSTEM_EXTRA_CERTIFICATE)   += insert-sys-cert
>  HOSTCFLAGS_sorttable.o = -I$(srctree)/tools/include
>  HOSTLDLIBS_sorttable = -lpthread
>  HOSTCFLAGS_asn1_compiler.o = -I$(srctree)/include
> -HOSTCFLAGS_sign-file.o = $(shell pkg-config --cflags libcrypto 2> /dev/null)
> -HOSTLDLIBS_sign-file = $(shell pkg-config --libs libcrypto 2> /dev/null || echo -lcrypto)
> +HOSTCFLAGS_sign-file.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null)
> +HOSTLDLIBS_sign-file = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto)
>
>  ifdef CONFIG_UNWINDER_ORC
>  ifeq ($(ARCH),x86_64)
> diff --git a/scripts/dtc/Makefile b/scripts/dtc/Makefile
> index 95aaf7431bff..743fc08827ea 100644
> --- a/scripts/dtc/Makefile
> +++ b/scripts/dtc/Makefile
> @@ -18,7 +18,7 @@ fdtoverlay-objs       := $(libfdt) fdtoverlay.o util.o
>  # Source files need to get at the userspace version of libfdt_env.h to compile
>  HOST_EXTRACFLAGS += -I $(srctree)/$(src)/libfdt
>
> -ifeq ($(shell pkg-config --exists yaml-0.1 2>/dev/null && echo yes),)
> +ifeq ($(shell $(HOSTPKG_CONFIG) --exists yaml-0.1 2>/dev/null && echo yes),)
>  ifneq ($(CHECK_DT_BINDING)$(CHECK_DTBS),)
>  $(error dtc needs libyaml for DT schema validation support. \
>         Install the necessary libyaml development package.)
> @@ -27,9 +27,9 @@ HOST_EXTRACFLAGS += -DNO_YAML
>  else
>  dtc-objs       += yamltree.o
>  # To include <yaml.h> installed in a non-default path
> -HOSTCFLAGS_yamltree.o := $(shell pkg-config --cflags yaml-0.1)
> +HOSTCFLAGS_yamltree.o := $(shell $(HOSTPKG_CONFIG) --cflags yaml-0.1)
>  # To link libyaml installed in a non-default path
> -HOSTLDLIBS_dtc := $(shell pkg-config yaml-0.1 --libs)
> +HOSTLDLIBS_dtc := $(shell $(HOSTPKG_CONFIG) yaml-0.1 --libs)
>  endif
>
>  # Generated files need one more search path to include headers in source tree
> diff --git a/scripts/kconfig/gconf-cfg.sh b/scripts/kconfig/gconf-cfg.sh
> index 480ecd8b9f41..4da4e39dcb53 100755
> --- a/scripts/kconfig/gconf-cfg.sh
> +++ b/scripts/kconfig/gconf-cfg.sh
> @@ -3,14 +3,14 @@
>
>  PKG="gtk+-2.0 gmodule-2.0 libglade-2.0"
>
> -if [ -z "$(command -v pkg-config)" ]; then
> +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
>         echo >&2 "*"
>         echo >&2 "* 'make gconfig' requires 'pkg-config'. Please install it."
>         echo >&2 "*"
>         exit 1
>  fi
>
> -if ! pkg-config --exists $PKG; then
> +if ! ${HOSTPKG_CONFIG} --exists $PKG; then
>         echo >&2 "*"
>         echo >&2 "* Unable to find the GTK+ installation. Please make sure that"
>         echo >&2 "* the GTK+ 2.0 development package is correctly installed."
> @@ -19,12 +19,12 @@ if ! pkg-config --exists $PKG; then
>         exit 1
>  fi
>
> -if ! pkg-config --atleast-version=2.0.0 gtk+-2.0; then
> +if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then
>         echo >&2 "*"
>         echo >&2 "* GTK+ is present but version >= 2.0.0 is required."
>         echo >&2 "*"
>         exit 1
>  fi
>
> -echo cflags=\"$(pkg-config --cflags $PKG)\"
> -echo libs=\"$(pkg-config --libs $PKG)\"
> +echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
> +echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
> diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh
> index b520e407a8eb..05837ed07fbd 100755
> --- a/scripts/kconfig/mconf-cfg.sh
> +++ b/scripts/kconfig/mconf-cfg.sh
> @@ -4,16 +4,16 @@
>  PKG="ncursesw"
>  PKG2="ncurses"
>
> -if [ -n "$(command -v pkg-config)" ]; then
> -       if pkg-config --exists $PKG; then
> -               echo cflags=\"$(pkg-config --cflags $PKG)\"
> -               echo libs=\"$(pkg-config --libs $PKG)\"
> +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
> +       if ${HOSTPKG_CONFIG} --exists $PKG; then
> +               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
> +               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
>                 exit 0
>         fi
>
> -       if pkg-config --exists $PKG2; then
> -               echo cflags=\"$(pkg-config --cflags $PKG2)\"
> -               echo libs=\"$(pkg-config --libs $PKG2)\"
> +       if ${HOSTPKG_CONFIG} --exists $PKG2; then
> +               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\"
> +               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\"
>                 exit 0
>         fi
>  fi
> diff --git a/scripts/kconfig/nconf-cfg.sh b/scripts/kconfig/nconf-cfg.sh
> index c212255070c0..e8d8f12d93ac 100755
> --- a/scripts/kconfig/nconf-cfg.sh
> +++ b/scripts/kconfig/nconf-cfg.sh
> @@ -4,16 +4,16 @@
>  PKG="ncursesw menuw panelw"
>  PKG2="ncurses menu panel"
>
> -if [ -n "$(command -v pkg-config)" ]; then
> -       if pkg-config --exists $PKG; then
> -               echo cflags=\"$(pkg-config --cflags $PKG)\"
> -               echo libs=\"$(pkg-config --libs $PKG)\"
> +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
> +       if ${HOSTPKG_CONFIG} --exists $PKG; then
> +               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
> +               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
>                 exit 0
>         fi
>
> -       if pkg-config --exists $PKG2; then
> -               echo cflags=\"$(pkg-config --cflags $PKG2)\"
> -               echo libs=\"$(pkg-config --libs $PKG2)\"
> +       if ${HOSTPKG_CONFIG} --exists $PKG2; then
> +               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\"
> +               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\"
>                 exit 0
>         fi
>  fi
> diff --git a/scripts/kconfig/qconf-cfg.sh b/scripts/kconfig/qconf-cfg.sh
> index fa564cd795b7..9b695e5cd9b3 100755
> --- a/scripts/kconfig/qconf-cfg.sh
> +++ b/scripts/kconfig/qconf-cfg.sh
> @@ -3,22 +3,22 @@
>
>  PKG="Qt5Core Qt5Gui Qt5Widgets"
>
> -if [ -z "$(command -v pkg-config)" ]; then
> +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
>         echo >&2 "*"
> -       echo >&2 "* 'make xconfig' requires 'pkg-config'. Please install it."
> +       echo >&2 "* 'make xconfig' requires '${HOSTPKG_CONFIG}'. Please install it."
>         echo >&2 "*"
>         exit 1
>  fi
>
> -if pkg-config --exists $PKG; then
> -       echo cflags=\"-std=c++11 -fPIC $(pkg-config --cflags $PKG)\"
> -       echo libs=\"$(pkg-config --libs $PKG)\"
> -       echo moc=\"$(pkg-config --variable=host_bins Qt5Core)/moc\"
> +if ${HOSTPKG_CONFIG} --exists $PKG; then
> +       echo cflags=\"-std=c++11 -fPIC $(${HOSTPKG_CONFIG} --cflags $PKG)\"
> +       echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
> +       echo moc=\"$(${HOSTPKG_CONFIG} --variable=host_bins Qt5Core)/moc\"
>         exit 0
>  fi
>
>  echo >&2 "*"
> -echo >&2 "* Could not find Qt5 via pkg-config."
> +echo >&2 "* Could not find Qt5 via ${HOSTPKG_CONFIG}."
>  echo >&2 "* Please install Qt5 and make sure it's in PKG_CONFIG_PATH"
>  echo >&2 "*"
>  exit 1
> diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile
> index 92ce4fce7bc7..549acc5859e9 100644
> --- a/tools/objtool/Makefile
> +++ b/tools/objtool/Makefile
> @@ -19,8 +19,8 @@ LIBSUBCMD             = $(LIBSUBCMD_OUTPUT)libsubcmd.a
>  OBJTOOL    := $(OUTPUT)objtool
>  OBJTOOL_IN := $(OBJTOOL)-in.o
>
> -LIBELF_FLAGS := $(shell pkg-config libelf --cflags 2>/dev/null)
> -LIBELF_LIBS  := $(shell pkg-config libelf --libs 2>/dev/null || echo -lelf)
> +LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
> +LIBELF_LIBS  := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)
>
>  all: $(OBJTOOL)
>
> --
> 2.35.1.616.g0bdcbb4464-goog
>


-- 
Thanks,
~Nick Desaulniers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-03-07 18:17 ` Nick Desaulniers
@ 2022-03-07 22:50   ` Chun-Tse Shao
  2022-03-08  4:01     ` Masahiro Yamada
  0 siblings, 1 reply; 12+ messages in thread
From: Chun-Tse Shao @ 2022-03-07 22:50 UTC (permalink / raw)
  To: Nick Desaulniers
  Cc: Masahiro Yamada, rostedt, nicolas, robh+dt, Michal Marek,
	David Howells, David Woodhouse, Frank Rowand, Josh Poimboeuf,
	Peter Zijlstra, linux-kbuild, linux-kernel, keyrings, devicetree

On Mon, Mar 07, 2022 at 10:17:17AM -0800, Nick Desaulniers wrote:
> On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
> >
> > Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> > what pkg-config and parameters are used.
>
> Sorry, kind a late thought here for v4, but we don't seem to prefix
> many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
> PYTHON3, etc.  Maybe just having the variable identifier be simply
> PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
> list in the top level Makefile after ZSTD (i.e. the list of host
> tools)?  There's HOST_ prefixes when there's more than one tool
> involved (i.e. host compiler vs target compiler), but I suspect
> there's no such distinction for the existing uses of pkg-config?
>
Thanks for your suggestion, Nick! Yes I think it makes sense with PKGCONFIG
instead of HOSTPKG_CONFIG since there is only one tool involved. I will
work on it and submit a new patch.

-CT
> Otherwise, sorry for opening a bikeshed so late; this patch still LGTM.
> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
>
> >
> > Signed-off-by: Chun-Tse Shao <ctshao@google.com>
> > ---
> > Changes from v3: https://lore.kernel.org/all/20220304041449.939308-1-ctshao@google.com
> >   - Dereference variables using {} instead of () in shell scripts
> >   - Tested with make allmodconfig
> >
> > Changes from v2: https://lore.kernel.org/all/20220302193638.11034-1-ctshao@google.com/
> >   - Fix more open coded instance of pkg-config in scripts and certs
> >   - Tested with make allmodconfig
> >
> > Changes from v1: https://lore.kernel.org/all/20220301230629.1892828-1-ctshao@google.com/
> >   - Make the commit message more clearer.
> > ---
> >  Makefile                     |  3 ++-
> >  certs/Makefile               |  4 ++--
> >  scripts/Makefile             |  4 ++--
> >  scripts/dtc/Makefile         |  6 +++---
> >  scripts/kconfig/gconf-cfg.sh | 10 +++++-----
> >  scripts/kconfig/mconf-cfg.sh | 14 +++++++-------
> >  scripts/kconfig/nconf-cfg.sh | 14 +++++++-------
> >  scripts/kconfig/qconf-cfg.sh | 14 +++++++-------
> >  tools/objtool/Makefile       |  4 ++--
> >  9 files changed, 37 insertions(+), 36 deletions(-)
> >
> > diff --git a/Makefile b/Makefile
> > index daeb5c88b50b..f6c5bef7e141 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -430,6 +430,7 @@ else
> >  HOSTCC = gcc
> >  HOSTCXX        = g++
> >  endif
> > +HOSTPKG_CONFIG = pkg-config
> >
> >  export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
> >                               -O2 -fomit-frame-pointer -std=gnu89
> > @@ -525,7 +526,7 @@ KBUILD_LDFLAGS_MODULE :=
> >  KBUILD_LDFLAGS :=
> >  CLANG_FLAGS :=
> >
> > -export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
> > +export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG
> >  export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
> >  export PERL PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
> >  export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD
> > diff --git a/certs/Makefile b/certs/Makefile
> > index 3ea7fe60823f..fa540d14ef2d 100644
> > --- a/certs/Makefile
> > +++ b/certs/Makefile
> > @@ -89,5 +89,5 @@ targets += x509_revocation_list
> >
> >  hostprogs := extract-cert
> >
> > -HOSTCFLAGS_extract-cert.o = $(shell pkg-config --cflags libcrypto 2> /dev/null)
> > -HOSTLDLIBS_extract-cert = $(shell pkg-config --libs libcrypto 2> /dev/null || echo -lcrypto)
> > +HOSTCFLAGS_extract-cert.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null)
> > +HOSTLDLIBS_extract-cert = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto)
> > diff --git a/scripts/Makefile b/scripts/Makefile
> > index ce5aa9030b74..f084f08ed176 100644
> > --- a/scripts/Makefile
> > +++ b/scripts/Makefile
> > @@ -14,8 +14,8 @@ hostprogs-always-$(CONFIG_SYSTEM_EXTRA_CERTIFICATE)   += insert-sys-cert
> >  HOSTCFLAGS_sorttable.o = -I$(srctree)/tools/include
> >  HOSTLDLIBS_sorttable = -lpthread
> >  HOSTCFLAGS_asn1_compiler.o = -I$(srctree)/include
> > -HOSTCFLAGS_sign-file.o = $(shell pkg-config --cflags libcrypto 2> /dev/null)
> > -HOSTLDLIBS_sign-file = $(shell pkg-config --libs libcrypto 2> /dev/null || echo -lcrypto)
> > +HOSTCFLAGS_sign-file.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null)
> > +HOSTLDLIBS_sign-file = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto)
> >
> >  ifdef CONFIG_UNWINDER_ORC
> >  ifeq ($(ARCH),x86_64)
> > diff --git a/scripts/dtc/Makefile b/scripts/dtc/Makefile
> > index 95aaf7431bff..743fc08827ea 100644
> > --- a/scripts/dtc/Makefile
> > +++ b/scripts/dtc/Makefile
> > @@ -18,7 +18,7 @@ fdtoverlay-objs       := $(libfdt) fdtoverlay.o util.o
> >  # Source files need to get at the userspace version of libfdt_env.h to compile
> >  HOST_EXTRACFLAGS += -I $(srctree)/$(src)/libfdt
> >
> > -ifeq ($(shell pkg-config --exists yaml-0.1 2>/dev/null && echo yes),)
> > +ifeq ($(shell $(HOSTPKG_CONFIG) --exists yaml-0.1 2>/dev/null && echo yes),)
> >  ifneq ($(CHECK_DT_BINDING)$(CHECK_DTBS),)
> >  $(error dtc needs libyaml for DT schema validation support. \
> >         Install the necessary libyaml development package.)
> > @@ -27,9 +27,9 @@ HOST_EXTRACFLAGS += -DNO_YAML
> >  else
> >  dtc-objs       += yamltree.o
> >  # To include <yaml.h> installed in a non-default path
> > -HOSTCFLAGS_yamltree.o := $(shell pkg-config --cflags yaml-0.1)
> > +HOSTCFLAGS_yamltree.o := $(shell $(HOSTPKG_CONFIG) --cflags yaml-0.1)
> >  # To link libyaml installed in a non-default path
> > -HOSTLDLIBS_dtc := $(shell pkg-config yaml-0.1 --libs)
> > +HOSTLDLIBS_dtc := $(shell $(HOSTPKG_CONFIG) yaml-0.1 --libs)
> >  endif
> >
> >  # Generated files need one more search path to include headers in source tree
> > diff --git a/scripts/kconfig/gconf-cfg.sh b/scripts/kconfig/gconf-cfg.sh
> > index 480ecd8b9f41..4da4e39dcb53 100755
> > --- a/scripts/kconfig/gconf-cfg.sh
> > +++ b/scripts/kconfig/gconf-cfg.sh
> > @@ -3,14 +3,14 @@
> >
> >  PKG="gtk+-2.0 gmodule-2.0 libglade-2.0"
> >
> > -if [ -z "$(command -v pkg-config)" ]; then
> > +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
> >         echo >&2 "*"
> >         echo >&2 "* 'make gconfig' requires 'pkg-config'. Please install it."
> >         echo >&2 "*"
> >         exit 1
> >  fi
> >
> > -if ! pkg-config --exists $PKG; then
> > +if ! ${HOSTPKG_CONFIG} --exists $PKG; then
> >         echo >&2 "*"
> >         echo >&2 "* Unable to find the GTK+ installation. Please make sure that"
> >         echo >&2 "* the GTK+ 2.0 development package is correctly installed."
> > @@ -19,12 +19,12 @@ if ! pkg-config --exists $PKG; then
> >         exit 1
> >  fi
> >
> > -if ! pkg-config --atleast-version=2.0.0 gtk+-2.0; then
> > +if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then
> >         echo >&2 "*"
> >         echo >&2 "* GTK+ is present but version >= 2.0.0 is required."
> >         echo >&2 "*"
> >         exit 1
> >  fi
> >
> > -echo cflags=\"$(pkg-config --cflags $PKG)\"
> > -echo libs=\"$(pkg-config --libs $PKG)\"
> > +echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
> > +echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
> > diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh
> > index b520e407a8eb..05837ed07fbd 100755
> > --- a/scripts/kconfig/mconf-cfg.sh
> > +++ b/scripts/kconfig/mconf-cfg.sh
> > @@ -4,16 +4,16 @@
> >  PKG="ncursesw"
> >  PKG2="ncurses"
> >
> > -if [ -n "$(command -v pkg-config)" ]; then
> > -       if pkg-config --exists $PKG; then
> > -               echo cflags=\"$(pkg-config --cflags $PKG)\"
> > -               echo libs=\"$(pkg-config --libs $PKG)\"
> > +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
> > +       if ${HOSTPKG_CONFIG} --exists $PKG; then
> > +               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
> > +               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
> >                 exit 0
> >         fi
> >
> > -       if pkg-config --exists $PKG2; then
> > -               echo cflags=\"$(pkg-config --cflags $PKG2)\"
> > -               echo libs=\"$(pkg-config --libs $PKG2)\"
> > +       if ${HOSTPKG_CONFIG} --exists $PKG2; then
> > +               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\"
> > +               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\"
> >                 exit 0
> >         fi
> >  fi
> > diff --git a/scripts/kconfig/nconf-cfg.sh b/scripts/kconfig/nconf-cfg.sh
> > index c212255070c0..e8d8f12d93ac 100755
> > --- a/scripts/kconfig/nconf-cfg.sh
> > +++ b/scripts/kconfig/nconf-cfg.sh
> > @@ -4,16 +4,16 @@
> >  PKG="ncursesw menuw panelw"
> >  PKG2="ncurses menu panel"
> >
> > -if [ -n "$(command -v pkg-config)" ]; then
> > -       if pkg-config --exists $PKG; then
> > -               echo cflags=\"$(pkg-config --cflags $PKG)\"
> > -               echo libs=\"$(pkg-config --libs $PKG)\"
> > +if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
> > +       if ${HOSTPKG_CONFIG} --exists $PKG; then
> > +               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
> > +               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
> >                 exit 0
> >         fi
> >
> > -       if pkg-config --exists $PKG2; then
> > -               echo cflags=\"$(pkg-config --cflags $PKG2)\"
> > -               echo libs=\"$(pkg-config --libs $PKG2)\"
> > +       if ${HOSTPKG_CONFIG} --exists $PKG2; then
> > +               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\"
> > +               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\"
> >                 exit 0
> >         fi
> >  fi
> > diff --git a/scripts/kconfig/qconf-cfg.sh b/scripts/kconfig/qconf-cfg.sh
> > index fa564cd795b7..9b695e5cd9b3 100755
> > --- a/scripts/kconfig/qconf-cfg.sh
> > +++ b/scripts/kconfig/qconf-cfg.sh
> > @@ -3,22 +3,22 @@
> >
> >  PKG="Qt5Core Qt5Gui Qt5Widgets"
> >
> > -if [ -z "$(command -v pkg-config)" ]; then
> > +if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
> >         echo >&2 "*"
> > -       echo >&2 "* 'make xconfig' requires 'pkg-config'. Please install it."
> > +       echo >&2 "* 'make xconfig' requires '${HOSTPKG_CONFIG}'. Please install it."
> >         echo >&2 "*"
> >         exit 1
> >  fi
> >
> > -if pkg-config --exists $PKG; then
> > -       echo cflags=\"-std=c++11 -fPIC $(pkg-config --cflags $PKG)\"
> > -       echo libs=\"$(pkg-config --libs $PKG)\"
> > -       echo moc=\"$(pkg-config --variable=host_bins Qt5Core)/moc\"
> > +if ${HOSTPKG_CONFIG} --exists $PKG; then
> > +       echo cflags=\"-std=c++11 -fPIC $(${HOSTPKG_CONFIG} --cflags $PKG)\"
> > +       echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
> > +       echo moc=\"$(${HOSTPKG_CONFIG} --variable=host_bins Qt5Core)/moc\"
> >         exit 0
> >  fi
> >
> >  echo >&2 "*"
> > -echo >&2 "* Could not find Qt5 via pkg-config."
> > +echo >&2 "* Could not find Qt5 via ${HOSTPKG_CONFIG}."
> >  echo >&2 "* Please install Qt5 and make sure it's in PKG_CONFIG_PATH"
> >  echo >&2 "*"
> >  exit 1
> > diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile
> > index 92ce4fce7bc7..549acc5859e9 100644
> > --- a/tools/objtool/Makefile
> > +++ b/tools/objtool/Makefile
> > @@ -19,8 +19,8 @@ LIBSUBCMD             = $(LIBSUBCMD_OUTPUT)libsubcmd.a
> >  OBJTOOL    := $(OUTPUT)objtool
> >  OBJTOOL_IN := $(OBJTOOL)-in.o
> >
> > -LIBELF_FLAGS := $(shell pkg-config libelf --cflags 2>/dev/null)
> > -LIBELF_LIBS  := $(shell pkg-config libelf --libs 2>/dev/null || echo -lelf)
> > +LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
> > +LIBELF_LIBS  := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)
> >
> >  all: $(OBJTOOL)
> >
> > --
> > 2.35.1.616.g0bdcbb4464-goog
> >
>
>
> --
> Thanks,
> ~Nick Desaulniers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-03-07 22:50   ` Chun-Tse Shao
@ 2022-03-08  4:01     ` Masahiro Yamada
  2022-03-08  5:26       ` Chun-Tse Shao
  2022-03-16  2:51       ` Chun-Tse Shao
  0 siblings, 2 replies; 12+ messages in thread
From: Masahiro Yamada @ 2022-03-08  4:01 UTC (permalink / raw)
  To: Chun-Tse Shao
  Cc: Nick Desaulniers, Steven Rostedt, Nicolas Schier, Rob Herring,
	Michal Marek, David Howells, David Woodhouse, Frank Rowand,
	Josh Poimboeuf, Peter Zijlstra, Linux Kbuild mailing list,
	Linux Kernel Mailing List, keyrings, DTML

On Tue, Mar 8, 2022 at 7:50 AM Chun-Tse Shao <ctshao@google.com> wrote:
>
> On Mon, Mar 07, 2022 at 10:17:17AM -0800, Nick Desaulniers wrote:
> > On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
> > >
> > > Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> > > what pkg-config and parameters are used.
> >
> > Sorry, kind a late thought here for v4, but we don't seem to prefix
> > many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
> > PYTHON3, etc.  Maybe just having the variable identifier be simply
> > PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
> > list in the top level Makefile after ZSTD (i.e. the list of host
> > tools)?  There's HOST_ prefixes when there's more than one tool
> > involved (i.e. host compiler vs target compiler), but I suspect
> > there's no such distinction for the existing uses of pkg-config?
> >
> Thanks for your suggestion, Nick! Yes I think it makes sense with PKGCONFIG
> instead of HOSTPKG_CONFIG since there is only one tool involved. I will
> work on it and submit a new patch.
>

Please hold on.

I was also wondering what to do with the "HOST" prefix.

Libraries are usually arch-dependent.
(in other words, pkg-config should return different library paths
for $(CC) and $(HOSTCC) )

You already understood this, so you added "HOST" prefix.


Please let me take time for further discussion.
I will come back to this when I get some time.


In the meantime,
  a8a5cd8b472ca20e5b8fa649c43b3756867322f8
as reference info if you have not seen it.


How many distros support something like
"aarch64-linux-gnu-pkg-config"  ?

Ubuntu 18.04 and 20.04 seem to support it.
I do not know for others.





--
Best Regards

Masahiro Yamada

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-03-08  4:01     ` Masahiro Yamada
@ 2022-03-08  5:26       ` Chun-Tse Shao
  2022-03-16  2:51       ` Chun-Tse Shao
  1 sibling, 0 replies; 12+ messages in thread
From: Chun-Tse Shao @ 2022-03-08  5:26 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Nick Desaulniers, Steven Rostedt, Nicolas Schier, Rob Herring,
	Michal Marek, David Howells, David Woodhouse, Frank Rowand,
	Josh Poimboeuf, Peter Zijlstra, Linux Kbuild mailing list,
	Linux Kernel Mailing List, keyrings, DTML

On Tue, Mar 08, 2022 at 01:01:45PM +0900, Masahiro Yamada wrote:
> On Tue, Mar 8, 2022 at 7:50 AM Chun-Tse Shao <ctshao@google.com> wrote:
> >
> > On Mon, Mar 07, 2022 at 10:17:17AM -0800, Nick Desaulniers wrote:
> > > On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
> > > >
> > > > Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> > > > what pkg-config and parameters are used.
> > >
> > > Sorry, kind a late thought here for v4, but we don't seem to prefix
> > > many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
> > > PYTHON3, etc.  Maybe just having the variable identifier be simply
> > > PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
> > > list in the top level Makefile after ZSTD (i.e. the list of host
> > > tools)?  There's HOST_ prefixes when there's more than one tool
> > > involved (i.e. host compiler vs target compiler), but I suspect
> > > there's no such distinction for the existing uses of pkg-config?
> > >
> > Thanks for your suggestion, Nick! Yes I think it makes sense with PKGCONFIG
> > instead of HOSTPKG_CONFIG since there is only one tool involved. I will
> > work on it and submit a new patch.
> >
>
> Please hold on.
>
> I was also wondering what to do with the "HOST" prefix.
>
> Libraries are usually arch-dependent.
> (in other words, pkg-config should return different library paths
> for $(CC) and $(HOSTCC) )
>
> You already understood this, so you added "HOST" prefix.
>
>
> Please let me take time for further discussion.
> I will come back to this when I get some time.
>
>
> In the meantime,
>   a8a5cd8b472ca20e5b8fa649c43b3756867322f8
> as reference info if you have not seen it.
>
>
> How many distros support something like
> "aarch64-linux-gnu-pkg-config"  ?
>
> Ubuntu 18.04 and 20.04 seem to support it.
> I do not know for others.
>
>
>
>
>
> --
> Best Regards
>
> Masahiro Yamada

Thanks Masahiro! Will wait for your suggestion.

-CT

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-03-08  4:01     ` Masahiro Yamada
  2022-03-08  5:26       ` Chun-Tse Shao
@ 2022-03-16  2:51       ` Chun-Tse Shao
  2022-03-22  7:42         ` Masahiro Yamada
  1 sibling, 1 reply; 12+ messages in thread
From: Chun-Tse Shao @ 2022-03-16  2:51 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Nick Desaulniers, Steven Rostedt, Nicolas Schier, Rob Herring,
	Michal Marek, David Howells, David Woodhouse, Frank Rowand,
	Josh Poimboeuf, Peter Zijlstra, Linux Kbuild mailing list,
	Linux Kernel Mailing List, keyrings, DTML

Tue, Mar 08, 2022 at 01:01:45PM +0900, Masahiro Yamada wrote:
> On Tue, Mar 8, 2022 at 7:50 AM Chun-Tse Shao <ctshao@google.com> wrote:
> >
> > On Mon, Mar 07, 2022 at 10:17:17AM -0800, Nick Desaulniers wrote:
> > > On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
> > > >
> > > > Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> > > > what pkg-config and parameters are used.
> > >
> > > Sorry, kind a late thought here for v4, but we don't seem to prefix
> > > many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
> > > PYTHON3, etc.  Maybe just having the variable identifier be simply
> > > PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
> > > list in the top level Makefile after ZSTD (i.e. the list of host
> > > tools)?  There's HOST_ prefixes when there's more than one tool
> > > involved (i.e. host compiler vs target compiler), but I suspect
> > > there's no such distinction for the existing uses of pkg-config?
> > >
> > Thanks for your suggestion, Nick! Yes I think it makes sense with PKGCONFIG
> > instead of HOSTPKG_CONFIG since there is only one tool involved. I will
> > work on it and submit a new patch.
> >
>
> Please hold on.
>
> I was also wondering what to do with the "HOST" prefix.
>
> Libraries are usually arch-dependent.
> (in other words, pkg-config should return different library paths
> for $(CC) and $(HOSTCC) )
>
> You already understood this, so you added "HOST" prefix.
>
>
> Please let me take time for further discussion.
> I will come back to this when I get some time.
>
>

Hi Mashiro,

I was wondering if you were able to look more into this.

Thank you!

-CT

> In the meantime,
>   a8a5cd8b472ca20e5b8fa649c43b3756867322f8
> as reference info if you have not seen it.
>
>
> How many distros support something like
> "aarch64-linux-gnu-pkg-config"  ?
>
> Ubuntu 18.04 and 20.04 seem to support it.
> I do not know for others.
>
>
>
>
>
> --
> Best Regards
>
> Masahiro Yamada

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-03-16  2:51       ` Chun-Tse Shao
@ 2022-03-22  7:42         ` Masahiro Yamada
  2022-03-22 17:19           ` Nick Desaulniers
  0 siblings, 1 reply; 12+ messages in thread
From: Masahiro Yamada @ 2022-03-22  7:42 UTC (permalink / raw)
  To: Chun-Tse Shao
  Cc: Nick Desaulniers, Steven Rostedt, Nicolas Schier, Rob Herring,
	Michal Marek, David Howells, David Woodhouse, Frank Rowand,
	Josh Poimboeuf, Peter Zijlstra, Linux Kbuild mailing list,
	Linux Kernel Mailing List, keyrings, DTML

On Wed, Mar 16, 2022 at 11:51 AM Chun-Tse Shao <ctshao@google.com> wrote:
>
> Tue, Mar 08, 2022 at 01:01:45PM +0900, Masahiro Yamada wrote:
> > On Tue, Mar 8, 2022 at 7:50 AM Chun-Tse Shao <ctshao@google.com> wrote:
> > >
> > > On Mon, Mar 07, 2022 at 10:17:17AM -0800, Nick Desaulniers wrote:
> > > > On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > >
> > > > > Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> > > > > what pkg-config and parameters are used.
> > > >
> > > > Sorry, kind a late thought here for v4, but we don't seem to prefix
> > > > many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
> > > > PYTHON3, etc.  Maybe just having the variable identifier be simply
> > > > PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
> > > > list in the top level Makefile after ZSTD (i.e. the list of host
> > > > tools)?  There's HOST_ prefixes when there's more than one tool
> > > > involved (i.e. host compiler vs target compiler), but I suspect
> > > > there's no such distinction for the existing uses of pkg-config?
> > > >
> > > Thanks for your suggestion, Nick! Yes I think it makes sense with PKGCONFIG
> > > instead of HOSTPKG_CONFIG since there is only one tool involved. I will
> > > work on it and submit a new patch.
> > >
> >
> > Please hold on.
> >
> > I was also wondering what to do with the "HOST" prefix.
> >
> > Libraries are usually arch-dependent.
> > (in other words, pkg-config should return different library paths
> > for $(CC) and $(HOSTCC) )
> >
> > You already understood this, so you added "HOST" prefix.
> >
> >
> > Please let me take time for further discussion.
> > I will come back to this when I get some time.
> >
> >
>
> Hi Mashiro,
>
> I was wondering if you were able to look more into this.
>
> Thank you!
>
> -CT
>
> > In the meantime,
> >   a8a5cd8b472ca20e5b8fa649c43b3756867322f8
> > as reference info if you have not seen it.
> >
> >
> > How many distros support something like
> > "aarch64-linux-gnu-pkg-config"  ?
> >
> > Ubuntu 18.04 and 20.04 seem to support it.
> > I do not know for others.
> >
> >
> >
> >



Sorry for the delay.
I am OK with the idea of allowing users to override the pkg-config command,
but I tend to take time before making a decision.




Does anybody have any insight / thoughts about the following points?






[Q1]   with/without "HOST" prefix


Apparently, "pkg-config" should return different libs/cflags
for $(CC) and $(HOSTCC).

I think the non-prefixed macro name "PKG_CONFIG" should be
reserved for $(CC)  (building for the target system).

"HOSTPKG_CONFIG" looks unbalanced
due to the underscore.

Perhaps, "HOST_PKG_CONFIG" might be better?




[Q2]    "pkg-config" vs "pkgconf"

The traditional pkg-config implementation [1] is not actively
maintained these days.
The last commit was more than one year ago.

The alternative one 'pkgconf' [2] is more active.

In fact, Fedora already switched to 'pkgconf' [3].
Now 'pkg-config' is just a wrapper of 'pkgconf'.
Many distributions already support pkgconf.


I considered the shorter macro name "HOSTPKGCONF" and

   HOSTPKGCONF  = pkgconf

but I am not sure if this is the right decision.
Maybe we should stick to "PKG_CONFIG" / "HOST_PKG_CONFIG"
for the macro names.


  [1]  https://gitlab.freedesktop.org/pkg-config/pkg-config.git
  [2]  https://github.com/pkgconf/pkgconf.git
  [3]  https://fedoraproject.org/wiki/Changes/pkgconf_as_system_pkg-config_implementation





[Q3] What is the trend of handling cross-compile by pkg-config (or pkgconf).


By default, pkg-config returns the libs/cflags for native builds.

For cross builds, the search paths for the *.pc files must be changed
via the "PKG_CONFIG_LIBDIR" environment variable.

To ease this, some distributions provide  <triplet>-pkg-config
(for example,   aarch64-linux-gnu-pkg-config).
This became the nationale for tools/build/feature/Makefile defining:

   PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config

But, this wrapper shell script is not always available.
I do not know how to do it with the LLVM tool suite.
I am not quite sure if this is the global solution.


These days, pkgconf supports another way, .personality file [4]
to specify the .pc search paths for cross builds.

Is it reasonable to use an option to distinguish native / cross builds
and use the same macro   "PKG_CONFIG = pkg-config" everywhere ?


[4] http://manpages.ubuntu.com/manpages/focal/en/man5/pkgconf-personality.5.html

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-03-22  7:42         ` Masahiro Yamada
@ 2022-03-22 17:19           ` Nick Desaulniers
  2022-03-22 20:21             ` Chun-Tse Shao
  0 siblings, 1 reply; 12+ messages in thread
From: Nick Desaulniers @ 2022-03-22 17:19 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Chun-Tse Shao, Steven Rostedt, Nicolas Schier, Rob Herring,
	Michal Marek, David Howells, David Woodhouse, Frank Rowand,
	Josh Poimboeuf, Peter Zijlstra, Linux Kbuild mailing list,
	Linux Kernel Mailing List, keyrings, DTML

On Tue, Mar 22, 2022 at 12:44 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> On Wed, Mar 16, 2022 at 11:51 AM Chun-Tse Shao <ctshao@google.com> wrote:
> >
> > Tue, Mar 08, 2022 at 01:01:45PM +0900, Masahiro Yamada wrote:
> > > On Tue, Mar 8, 2022 at 7:50 AM Chun-Tse Shao <ctshao@google.com> wrote:
> > > >
> > > > On Mon, Mar 07, 2022 at 10:17:17AM -0800, Nick Desaulniers wrote:
> > > > > On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > > >
> > > > > > Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> > > > > > what pkg-config and parameters are used.
> > > > >
> > > > > Sorry, kind a late thought here for v4, but we don't seem to prefix
> > > > > many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
> > > > > PYTHON3, etc.  Maybe just having the variable identifier be simply
> > > > > PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
> > > > > list in the top level Makefile after ZSTD (i.e. the list of host
> > > > > tools)?  There's HOST_ prefixes when there's more than one tool
> > > > > involved (i.e. host compiler vs target compiler), but I suspect
> > > > > there's no such distinction for the existing uses of pkg-config?
> > > > >
> > > > Thanks for your suggestion, Nick! Yes I think it makes sense with PKGCONFIG
> > > > instead of HOSTPKG_CONFIG since there is only one tool involved. I will
> > > > work on it and submit a new patch.
> > > >
> > >
> > > Please hold on.
> > >
> > > I was also wondering what to do with the "HOST" prefix.
> > >
> > > Libraries are usually arch-dependent.
> > > (in other words, pkg-config should return different library paths
> > > for $(CC) and $(HOSTCC) )
> > >
> > > You already understood this, so you added "HOST" prefix.
> > >
> > >
> > > Please let me take time for further discussion.
> > > I will come back to this when I get some time.
> > >
> > >
> >
> > Hi Mashiro,
> >
> > I was wondering if you were able to look more into this.
> >
> > Thank you!
> >
> > -CT
> >
> > > In the meantime,
> > >   a8a5cd8b472ca20e5b8fa649c43b3756867322f8
> > > as reference info if you have not seen it.
> > >
> > >
> > > How many distros support something like
> > > "aarch64-linux-gnu-pkg-config"  ?
> > >
> > > Ubuntu 18.04 and 20.04 seem to support it.
> > > I do not know for others.
> > >
> > >
> > >
> > >
>
>
>
> Sorry for the delay.
> I am OK with the idea of allowing users to override the pkg-config command,
> but I tend to take time before making a decision.
>
>
>
>
> Does anybody have any insight / thoughts about the following points?
>
>
>
>
>
>
> [Q1]   with/without "HOST" prefix
>
>
> Apparently, "pkg-config" should return different libs/cflags
> for $(CC) and $(HOSTCC).
>
> I think the non-prefixed macro name "PKG_CONFIG" should be
> reserved for $(CC)  (building for the target system).

Ok. I retract my comment on v4 about removing the HOST prefix then.

>
> "HOSTPKG_CONFIG" looks unbalanced
> due to the underscore.
>
> Perhaps, "HOST_PKG_CONFIG" might be better?

I'm fine with HOSTPKG_CONFIG (what's in v4); follows the style of
HOSTCC and HOSTCXX.

>
>
>
>
> [Q2]    "pkg-config" vs "pkgconf"
>
> The traditional pkg-config implementation [1] is not actively
> maintained these days.
> The last commit was more than one year ago.
>
> The alternative one 'pkgconf' [2] is more active.
>
> In fact, Fedora already switched to 'pkgconf' [3].
> Now 'pkg-config' is just a wrapper of 'pkgconf'.
> Many distributions already support pkgconf.
>
>
> I considered the shorter macro name "HOSTPKGCONF" and
>
>    HOSTPKGCONF  = pkgconf
>
> but I am not sure if this is the right decision.
> Maybe we should stick to "PKG_CONFIG" / "HOST_PKG_CONFIG"
> for the macro names.
>
>
>   [1]  https://gitlab.freedesktop.org/pkg-config/pkg-config.git
>   [2]  https://github.com/pkgconf/pkgconf.git
>   [3]  https://fedoraproject.org/wiki/Changes/pkgconf_as_system_pkg-config_implementation

If the folks sending this are working on CrOS, better find what's in
their build system. Chun-Tse?

(I feel like I'm behind the times again, like when `apt-get install`
became old news in favor of `apt install`...)

>
>
>
>
>
> [Q3] What is the trend of handling cross-compile by pkg-config (or pkgconf).
>
>
> By default, pkg-config returns the libs/cflags for native builds.
>
> For cross builds, the search paths for the *.pc files must be changed
> via the "PKG_CONFIG_LIBDIR" environment variable.
>
> To ease this, some distributions provide  <triplet>-pkg-config
> (for example,   aarch64-linux-gnu-pkg-config).
> This became the nationale for tools/build/feature/Makefile defining:
>
>    PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
>
> But, this wrapper shell script is not always available.
> I do not know how to do it with the LLVM tool suite.
> I am not quite sure if this is the global solution.
>
>
> These days, pkgconf supports another way, .personality file [4]
> to specify the .pc search paths for cross builds.
>
> Is it reasonable to use an option to distinguish native / cross builds
> and use the same macro   "PKG_CONFIG = pkg-config" everywhere ?
>
>
> [4] http://manpages.ubuntu.com/manpages/focal/en/man5/pkgconf-personality.5.html

I'm not sure, but do we need to cross that bridge for this patch if
it's just adding support for the HOST? No cross pkg-config necessary,
yet. (Famous last words).
-- 
Thanks,
~Nick Desaulniers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-03-22 17:19           ` Nick Desaulniers
@ 2022-03-22 20:21             ` Chun-Tse Shao
  2022-03-31 21:58               ` Chun-Tse Shao
  0 siblings, 1 reply; 12+ messages in thread
From: Chun-Tse Shao @ 2022-03-22 20:21 UTC (permalink / raw)
  To: Nick Desaulniers, Masahiro Yamada
  Cc: Masahiro Yamada, Steven Rostedt, Nicolas Schier, Rob Herring,
	Michal Marek, David Howells, David Woodhouse, Frank Rowand,
	Josh Poimboeuf, Peter Zijlstra, Linux Kbuild mailing list,
	Linux Kernel Mailing List, keyrings, DTML

On Tue, Mar 22, 2022 at 10:19:14AM -0700, Nick Desaulniers wrote:
> On Tue, Mar 22, 2022 at 12:44 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> > On Wed, Mar 16, 2022 at 11:51 AM Chun-Tse Shao <ctshao@google.com> wrote:
> > >
> > > Tue, Mar 08, 2022 at 01:01:45PM +0900, Masahiro Yamada wrote:
> > > > On Tue, Mar 8, 2022 at 7:50 AM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > >
> > > > > On Mon, Mar 07, 2022 at 10:17:17AM -0800, Nick Desaulniers wrote:
> > > > > > On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > > > >
> > > > > > > Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> > > > > > > what pkg-config and parameters are used.
> > > > > >
> > > > > > Sorry, kind a late thought here for v4, but we don't seem to prefix
> > > > > > many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
> > > > > > PYTHON3, etc.  Maybe just having the variable identifier be simply
> > > > > > PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
> > > > > > list in the top level Makefile after ZSTD (i.e. the list of host
> > > > > > tools)?  There's HOST_ prefixes when there's more than one tool
> > > > > > involved (i.e. host compiler vs target compiler), but I suspect
> > > > > > there's no such distinction for the existing uses of pkg-config?
> > > > > >
> > > > > Thanks for your suggestion, Nick! Yes I think it makes sense with PKGCONFIG
> > > > > instead of HOSTPKG_CONFIG since there is only one tool involved. I will
> > > > > work on it and submit a new patch.
> > > > >
> > > >
> > > > Please hold on.
> > > >
> > > > I was also wondering what to do with the "HOST" prefix.
> > > >
> > > > Libraries are usually arch-dependent.
> > > > (in other words, pkg-config should return different library paths
> > > > for $(CC) and $(HOSTCC) )
> > > >
> > > > You already understood this, so you added "HOST" prefix.
> > > >
> > > >
> > > > Please let me take time for further discussion.
> > > > I will come back to this when I get some time.
> > > >
> > > >
> > >
> > > Hi Mashiro,
> > >
> > > I was wondering if you were able to look more into this.
> > >
> > > Thank you!
> > >
> > > -CT
> > >
> > > > In the meantime,
> > > >   a8a5cd8b472ca20e5b8fa649c43b3756867322f8
> > > > as reference info if you have not seen it.
> > > >
> > > >
> > > > How many distros support something like
> > > > "aarch64-linux-gnu-pkg-config"  ?
> > > >
> > > > Ubuntu 18.04 and 20.04 seem to support it.
> > > > I do not know for others.
> > > >
> > > >
> > > >
> > > >
> >
> >
> >
> > Sorry for the delay.
> > I am OK with the idea of allowing users to override the pkg-config command,
> > but I tend to take time before making a decision.
> >
> >
> >
> >
> > Does anybody have any insight / thoughts about the following points?
> >
> >
> >
> >
> >
> >
> > [Q1]   with/without "HOST" prefix
> >
> >
> > Apparently, "pkg-config" should return different libs/cflags
> > for $(CC) and $(HOSTCC).
> >
> > I think the non-prefixed macro name "PKG_CONFIG" should be
> > reserved for $(CC)  (building for the target system).
>
> Ok. I retract my comment on v4 about removing the HOST prefix then.
>
> >
> > "HOSTPKG_CONFIG" looks unbalanced
> > due to the underscore.
> >
> > Perhaps, "HOST_PKG_CONFIG" might be better?
>
> I'm fine with HOSTPKG_CONFIG (what's in v4); follows the style of
> HOSTCC and HOSTCXX.
>

Agree, it should follow the style of HOSTCC/HOSTCXX.

> >
> >
> >
> >
> > [Q2]    "pkg-config" vs "pkgconf"
> >
> > The traditional pkg-config implementation [1] is not actively
> > maintained these days.
> > The last commit was more than one year ago.
> >
> > The alternative one 'pkgconf' [2] is more active.
> >
> > In fact, Fedora already switched to 'pkgconf' [3].
> > Now 'pkg-config' is just a wrapper of 'pkgconf'.
> > Many distributions already support pkgconf.
> >
> >
> > I considered the shorter macro name "HOSTPKGCONF" and
> >
> >    HOSTPKGCONF  = pkgconf
> >
> > but I am not sure if this is the right decision.
> > Maybe we should stick to "PKG_CONFIG" / "HOST_PKG_CONFIG"
> > for the macro names.
> >
> >
> >   [1]  https://gitlab.freedesktop.org/pkg-config/pkg-config.git
> >   [2]  https://github.com/pkgconf/pkgconf.git
> >   [3]  https://fedoraproject.org/wiki/Changes/pkgconf_as_system_pkg-config_implementation
>
> If the folks sending this are working on CrOS, better find what's in
> their build system. Chun-Tse?
>
> (I feel like I'm behind the times again, like when `apt-get install`
> became old news in favor of `apt install`...)
>

In Cros we only support pkg-config, and that is the reason we would like
to make this change in upstream.

> >
> >
> >
> >
> >
> > [Q3] What is the trend of handling cross-compile by pkg-config (or pkgconf).
> >
> >
> > By default, pkg-config returns the libs/cflags for native builds.
> >
> > For cross builds, the search paths for the *.pc files must be changed
> > via the "PKG_CONFIG_LIBDIR" environment variable.
> >
> > To ease this, some distributions provide  <triplet>-pkg-config
> > (for example,   aarch64-linux-gnu-pkg-config).
> > This became the nationale for tools/build/feature/Makefile defining:
> >
> >    PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
> >
> > But, this wrapper shell script is not always available.
> > I do not know how to do it with the LLVM tool suite.
> > I am not quite sure if this is the global solution.
> >
> >
> > These days, pkgconf supports another way, .personality file [4]
> > to specify the .pc search paths for cross builds.
> >
> > Is it reasonable to use an option to distinguish native / cross builds
> > and use the same macro   "PKG_CONFIG = pkg-config" everywhere ?
> >
> >
> > [4] http://manpages.ubuntu.com/manpages/focal/en/man5/pkgconf-personality.5.html
>
> I'm not sure, but do we need to cross that bridge for this patch if
> it's just adding support for the HOST? No cross pkg-config necessary,
> yet. (Famous last words).

Agree with Nick.

Thanks,
CT
> --
> Thanks,
> ~Nick Desaulniers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-03-22 20:21             ` Chun-Tse Shao
@ 2022-03-31 21:58               ` Chun-Tse Shao
  2022-04-01 14:42                 ` Masahiro Yamada
  0 siblings, 1 reply; 12+ messages in thread
From: Chun-Tse Shao @ 2022-03-31 21:58 UTC (permalink / raw)
  To: Nick Desaulniers, Masahiro Yamada
  Cc: Steven Rostedt, Nicolas Schier, Rob Herring, Michal Marek,
	David Howells, David Woodhouse, Frank Rowand, Josh Poimboeuf,
	Peter Zijlstra, Linux Kbuild mailing list,
	Linux Kernel Mailing List, keyrings, DTML

On Tue, Mar 22, 2022 at 1:21 PM Chun-Tse Shao <ctshao@google.com> wrote:
>
> On Tue, Mar 22, 2022 at 10:19:14AM -0700, Nick Desaulniers wrote:
> > On Tue, Mar 22, 2022 at 12:44 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> > >
> > > On Wed, Mar 16, 2022 at 11:51 AM Chun-Tse Shao <ctshao@google.com> wrote:
> > > >
> > > > Tue, Mar 08, 2022 at 01:01:45PM +0900, Masahiro Yamada wrote:
> > > > > On Tue, Mar 8, 2022 at 7:50 AM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > > >
> > > > > > On Mon, Mar 07, 2022 at 10:17:17AM -0800, Nick Desaulniers wrote:
> > > > > > > On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > > > > >
> > > > > > > > Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> > > > > > > > what pkg-config and parameters are used.
> > > > > > >
> > > > > > > Sorry, kind a late thought here for v4, but we don't seem to prefix
> > > > > > > many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
> > > > > > > PYTHON3, etc.  Maybe just having the variable identifier be simply
> > > > > > > PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
> > > > > > > list in the top level Makefile after ZSTD (i.e. the list of host
> > > > > > > tools)?  There's HOST_ prefixes when there's more than one tool
> > > > > > > involved (i.e. host compiler vs target compiler), but I suspect
> > > > > > > there's no such distinction for the existing uses of pkg-config?
> > > > > > >
> > > > > > Thanks for your suggestion, Nick! Yes I think it makes sense with PKGCONFIG
> > > > > > instead of HOSTPKG_CONFIG since there is only one tool involved. I will
> > > > > > work on it and submit a new patch.
> > > > > >
> > > > >
> > > > > Please hold on.
> > > > >
> > > > > I was also wondering what to do with the "HOST" prefix.
> > > > >
> > > > > Libraries are usually arch-dependent.
> > > > > (in other words, pkg-config should return different library paths
> > > > > for $(CC) and $(HOSTCC) )
> > > > >
> > > > > You already understood this, so you added "HOST" prefix.
> > > > >
> > > > >
> > > > > Please let me take time for further discussion.
> > > > > I will come back to this when I get some time.
> > > > >
> > > > >
> > > >
> > > > Hi Mashiro,
> > > >
> > > > I was wondering if you were able to look more into this.
> > > >
> > > > Thank you!
> > > >
> > > > -CT
> > > >
> > > > > In the meantime,
> > > > >   a8a5cd8b472ca20e5b8fa649c43b3756867322f8
> > > > > as reference info if you have not seen it.
> > > > >
> > > > >
> > > > > How many distros support something like
> > > > > "aarch64-linux-gnu-pkg-config"  ?
> > > > >
> > > > > Ubuntu 18.04 and 20.04 seem to support it.
> > > > > I do not know for others.
> > > > >
> > > > >
> > > > >
> > > > >
> > >
> > >
> > >
> > > Sorry for the delay.
> > > I am OK with the idea of allowing users to override the pkg-config command,
> > > but I tend to take time before making a decision.
> > >
> > >
> > >
> > >
> > > Does anybody have any insight / thoughts about the following points?
> > >
> > >
> > >
> > >
> > >
> > >
> > > [Q1]   with/without "HOST" prefix
> > >
> > >
> > > Apparently, "pkg-config" should return different libs/cflags
> > > for $(CC) and $(HOSTCC).
> > >
> > > I think the non-prefixed macro name "PKG_CONFIG" should be
> > > reserved for $(CC)  (building for the target system).
> >
> > Ok. I retract my comment on v4 about removing the HOST prefix then.
> >
> > >
> > > "HOSTPKG_CONFIG" looks unbalanced
> > > due to the underscore.
> > >
> > > Perhaps, "HOST_PKG_CONFIG" might be better?
> >
> > I'm fine with HOSTPKG_CONFIG (what's in v4); follows the style of
> > HOSTCC and HOSTCXX.
> >
>
> Agree, it should follow the style of HOSTCC/HOSTCXX.
>
> > >
> > >
> > >
> > >
> > > [Q2]    "pkg-config" vs "pkgconf"
> > >
> > > The traditional pkg-config implementation [1] is not actively
> > > maintained these days.
> > > The last commit was more than one year ago.
> > >
> > > The alternative one 'pkgconf' [2] is more active.
> > >
> > > In fact, Fedora already switched to 'pkgconf' [3].
> > > Now 'pkg-config' is just a wrapper of 'pkgconf'.
> > > Many distributions already support pkgconf.
> > >
> > >
> > > I considered the shorter macro name "HOSTPKGCONF" and
> > >
> > >    HOSTPKGCONF  = pkgconf
> > >
> > > but I am not sure if this is the right decision.
> > > Maybe we should stick to "PKG_CONFIG" / "HOST_PKG_CONFIG"
> > > for the macro names.
> > >
> > >
> > >   [1]  https://gitlab.freedesktop.org/pkg-config/pkg-config.git
> > >   [2]  https://github.com/pkgconf/pkgconf.git
> > >   [3]  https://fedoraproject.org/wiki/Changes/pkgconf_as_system_pkg-config_implementation
> >
> > If the folks sending this are working on CrOS, better find what's in
> > their build system. Chun-Tse?
> >
> > (I feel like I'm behind the times again, like when `apt-get install`
> > became old news in favor of `apt install`...)
> >
>
> In Cros we only support pkg-config, and that is the reason we would like
> to make this change in upstream.
>
> > >
> > >
> > >
> > >
> > >
> > > [Q3] What is the trend of handling cross-compile by pkg-config (or pkgconf).
> > >
> > >
> > > By default, pkg-config returns the libs/cflags for native builds.
> > >
> > > For cross builds, the search paths for the *.pc files must be changed
> > > via the "PKG_CONFIG_LIBDIR" environment variable.
> > >
> > > To ease this, some distributions provide  <triplet>-pkg-config
> > > (for example,   aarch64-linux-gnu-pkg-config).
> > > This became the nationale for tools/build/feature/Makefile defining:
> > >
> > >    PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
> > >
> > > But, this wrapper shell script is not always available.
> > > I do not know how to do it with the LLVM tool suite.
> > > I am not quite sure if this is the global solution.
> > >
> > >
> > > These days, pkgconf supports another way, .personality file [4]
> > > to specify the .pc search paths for cross builds.
> > >
> > > Is it reasonable to use an option to distinguish native / cross builds
> > > and use the same macro   "PKG_CONFIG = pkg-config" everywhere ?
> > >
> > >
> > > [4] http://manpages.ubuntu.com/manpages/focal/en/man5/pkgconf-personality.5.html
> >
> > I'm not sure, but do we need to cross that bridge for this patch if
> > it's just adding support for the HOST? No cross pkg-config necessary,
> > yet. (Famous last words).
>
> Agree with Nick.
>
> Thanks,
> CT
> > --
> > Thanks,
> > ~Nick Desaulniers

Hi Masahiro,

I was wondering if you have any suggestions and thoughts.

Thank you!

-CT

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-03-31 21:58               ` Chun-Tse Shao
@ 2022-04-01 14:42                 ` Masahiro Yamada
  2022-04-01 23:42                   ` Chun-Tse Shao
  0 siblings, 1 reply; 12+ messages in thread
From: Masahiro Yamada @ 2022-04-01 14:42 UTC (permalink / raw)
  To: Chun-Tse Shao
  Cc: Nick Desaulniers, Steven Rostedt, Nicolas Schier, Rob Herring,
	Michal Marek, David Howells, David Woodhouse, Frank Rowand,
	Josh Poimboeuf, Peter Zijlstra, Linux Kbuild mailing list,
	Linux Kernel Mailing List, keyrings, DTML

On Fri, Apr 1, 2022 at 6:58 AM Chun-Tse Shao <ctshao@google.com> wrote:
>
> On Tue, Mar 22, 2022 at 1:21 PM Chun-Tse Shao <ctshao@google.com> wrote:
> >
> > On Tue, Mar 22, 2022 at 10:19:14AM -0700, Nick Desaulniers wrote:
> > > On Tue, Mar 22, 2022 at 12:44 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> > > >
> > > > On Wed, Mar 16, 2022 at 11:51 AM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > >
> > > > > Tue, Mar 08, 2022 at 01:01:45PM +0900, Masahiro Yamada wrote:
> > > > > > On Tue, Mar 8, 2022 at 7:50 AM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > > > >
> > > > > > > On Mon, Mar 07, 2022 at 10:17:17AM -0800, Nick Desaulniers wrote:
> > > > > > > > On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > > > > > >
> > > > > > > > > Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> > > > > > > > > what pkg-config and parameters are used.
> > > > > > > >
> > > > > > > > Sorry, kind a late thought here for v4, but we don't seem to prefix
> > > > > > > > many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
> > > > > > > > PYTHON3, etc.  Maybe just having the variable identifier be simply
> > > > > > > > PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
> > > > > > > > list in the top level Makefile after ZSTD (i.e. the list of host
> > > > > > > > tools)?  There's HOST_ prefixes when there's more than one tool
> > > > > > > > involved (i.e. host compiler vs target compiler), but I suspect
> > > > > > > > there's no such distinction for the existing uses of pkg-config?
> > > > > > > >
> > > > > > > Thanks for your suggestion, Nick! Yes I think it makes sense with PKGCONFIG
> > > > > > > instead of HOSTPKG_CONFIG since there is only one tool involved. I will
> > > > > > > work on it and submit a new patch.
> > > > > > >
> > > > > >
> > > > > > Please hold on.
> > > > > >
> > > > > > I was also wondering what to do with the "HOST" prefix.
> > > > > >
> > > > > > Libraries are usually arch-dependent.
> > > > > > (in other words, pkg-config should return different library paths
> > > > > > for $(CC) and $(HOSTCC) )
> > > > > >
> > > > > > You already understood this, so you added "HOST" prefix.
> > > > > >
> > > > > >
> > > > > > Please let me take time for further discussion.
> > > > > > I will come back to this when I get some time.
> > > > > >
> > > > > >
> > > > >
> > > > > Hi Mashiro,
> > > > >
> > > > > I was wondering if you were able to look more into this.
> > > > >
> > > > > Thank you!
> > > > >
> > > > > -CT
> > > > >
> > > > > > In the meantime,
> > > > > >   a8a5cd8b472ca20e5b8fa649c43b3756867322f8
> > > > > > as reference info if you have not seen it.
> > > > > >
> > > > > >
> > > > > > How many distros support something like
> > > > > > "aarch64-linux-gnu-pkg-config"  ?
> > > > > >
> > > > > > Ubuntu 18.04 and 20.04 seem to support it.
> > > > > > I do not know for others.
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > >
> > > >
> > > >
> > > > Sorry for the delay.
> > > > I am OK with the idea of allowing users to override the pkg-config command,
> > > > but I tend to take time before making a decision.
> > > >
> > > >
> > > >
> > > >
> > > > Does anybody have any insight / thoughts about the following points?
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > [Q1]   with/without "HOST" prefix
> > > >
> > > >
> > > > Apparently, "pkg-config" should return different libs/cflags
> > > > for $(CC) and $(HOSTCC).
> > > >
> > > > I think the non-prefixed macro name "PKG_CONFIG" should be
> > > > reserved for $(CC)  (building for the target system).
> > >
> > > Ok. I retract my comment on v4 about removing the HOST prefix then.
> > >
> > > >
> > > > "HOSTPKG_CONFIG" looks unbalanced
> > > > due to the underscore.
> > > >
> > > > Perhaps, "HOST_PKG_CONFIG" might be better?
> > >
> > > I'm fine with HOSTPKG_CONFIG (what's in v4); follows the style of
> > > HOSTCC and HOSTCXX.
> > >
> >
> > Agree, it should follow the style of HOSTCC/HOSTCXX.
> >
> > > >
> > > >
> > > >
> > > >
> > > > [Q2]    "pkg-config" vs "pkgconf"
> > > >
> > > > The traditional pkg-config implementation [1] is not actively
> > > > maintained these days.
> > > > The last commit was more than one year ago.
> > > >
> > > > The alternative one 'pkgconf' [2] is more active.
> > > >
> > > > In fact, Fedora already switched to 'pkgconf' [3].
> > > > Now 'pkg-config' is just a wrapper of 'pkgconf'.
> > > > Many distributions already support pkgconf.
> > > >
> > > >
> > > > I considered the shorter macro name "HOSTPKGCONF" and
> > > >
> > > >    HOSTPKGCONF  = pkgconf
> > > >
> > > > but I am not sure if this is the right decision.
> > > > Maybe we should stick to "PKG_CONFIG" / "HOST_PKG_CONFIG"
> > > > for the macro names.
> > > >
> > > >
> > > >   [1]  https://gitlab.freedesktop.org/pkg-config/pkg-config.git
> > > >   [2]  https://github.com/pkgconf/pkgconf.git
> > > >   [3]  https://fedoraproject.org/wiki/Changes/pkgconf_as_system_pkg-config_implementation
> > >
> > > If the folks sending this are working on CrOS, better find what's in
> > > their build system. Chun-Tse?
> > >
> > > (I feel like I'm behind the times again, like when `apt-get install`
> > > became old news in favor of `apt install`...)
> > >
> >
> > In Cros we only support pkg-config, and that is the reason we would like
> > to make this change in upstream.
> >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > [Q3] What is the trend of handling cross-compile by pkg-config (or pkgconf).
> > > >
> > > >
> > > > By default, pkg-config returns the libs/cflags for native builds.
> > > >
> > > > For cross builds, the search paths for the *.pc files must be changed
> > > > via the "PKG_CONFIG_LIBDIR" environment variable.
> > > >
> > > > To ease this, some distributions provide  <triplet>-pkg-config
> > > > (for example,   aarch64-linux-gnu-pkg-config).
> > > > This became the nationale for tools/build/feature/Makefile defining:
> > > >
> > > >    PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
> > > >
> > > > But, this wrapper shell script is not always available.
> > > > I do not know how to do it with the LLVM tool suite.
> > > > I am not quite sure if this is the global solution.
> > > >
> > > >
> > > > These days, pkgconf supports another way, .personality file [4]
> > > > to specify the .pc search paths for cross builds.
> > > >
> > > > Is it reasonable to use an option to distinguish native / cross builds
> > > > and use the same macro   "PKG_CONFIG = pkg-config" everywhere ?
> > > >
> > > >
> > > > [4] http://manpages.ubuntu.com/manpages/focal/en/man5/pkgconf-personality.5.html
> > >
> > > I'm not sure, but do we need to cross that bridge for this patch if
> > > it's just adding support for the HOST? No cross pkg-config necessary,
> > > yet. (Famous last words).
> >
> > Agree with Nick.
> >
> > Thanks,
> > CT
> > > --
> > > Thanks,
> > > ~Nick Desaulniers
>
> Hi Masahiro,
>
> I was wondering if you have any suggestions and thoughts.
>
> Thank you!
>
> -CT


Nobody was opposed to the macro name HOST_KG_CONFIG,
so I am fine.



I still see inconsistency in your patch, though.


For example, you did

       echo >&2 "* 'make xconfig' requires '${HOSTPKG_CONFIG}'. Please
install it."

in scripts/kconfig/qconf-cfg.sh


but, you kept

       echo >&2 "* 'make gconfig' requires 'pkg-config'. Please install it."

in scripts/kconfig/gconf-cfg.sh




Also, I prefer "kbuild:" to "config:"
for the patch subject.


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4] config: Allow kernel installation packaging to override pkg-config
  2022-04-01 14:42                 ` Masahiro Yamada
@ 2022-04-01 23:42                   ` Chun-Tse Shao
  0 siblings, 0 replies; 12+ messages in thread
From: Chun-Tse Shao @ 2022-04-01 23:42 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Nick Desaulniers, Steven Rostedt, Nicolas Schier, Rob Herring,
	Michal Marek, David Howells, David Woodhouse, Frank Rowand,
	Josh Poimboeuf, Peter Zijlstra, Linux Kbuild mailing list,
	Linux Kernel Mailing List, keyrings, DTML

On Fri, Apr 01, 2022 at 11:42:13PM +0900, Masahiro Yamada wrote:
> On Fri, Apr 1, 2022 at 6:58 AM Chun-Tse Shao <ctshao@google.com> wrote:
> >
> > On Tue, Mar 22, 2022 at 1:21 PM Chun-Tse Shao <ctshao@google.com> wrote:
> > >
> > > On Tue, Mar 22, 2022 at 10:19:14AM -0700, Nick Desaulniers wrote:
> > > > On Tue, Mar 22, 2022 at 12:44 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> > > > >
> > > > > On Wed, Mar 16, 2022 at 11:51 AM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > > >
> > > > > > Tue, Mar 08, 2022 at 01:01:45PM +0900, Masahiro Yamada wrote:
> > > > > > > On Tue, Mar 8, 2022 at 7:50 AM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > > > > >
> > > > > > > > On Mon, Mar 07, 2022 at 10:17:17AM -0800, Nick Desaulniers wrote:
> > > > > > > > > On Sun, Mar 6, 2022 at 2:39 PM Chun-Tse Shao <ctshao@google.com> wrote:
> > > > > > > > > >
> > > > > > > > > > Add HOSTPKG_CONFIG to allow tooling that builds the kernel to override
> > > > > > > > > > what pkg-config and parameters are used.
> > > > > > > > >
> > > > > > > > > Sorry, kind a late thought here for v4, but we don't seem to prefix
> > > > > > > > > many other host side tools with HOST_, i.e. LEX, YACC, AWK, PERL,
> > > > > > > > > PYTHON3, etc.  Maybe just having the variable identifier be simply
> > > > > > > > > PKGCONFIG rather than HOSTPKG_CONFIG then put it at the end of the
> > > > > > > > > list in the top level Makefile after ZSTD (i.e. the list of host
> > > > > > > > > tools)?  There's HOST_ prefixes when there's more than one tool
> > > > > > > > > involved (i.e. host compiler vs target compiler), but I suspect
> > > > > > > > > there's no such distinction for the existing uses of pkg-config?
> > > > > > > > >
> > > > > > > > Thanks for your suggestion, Nick! Yes I think it makes sense with PKGCONFIG
> > > > > > > > instead of HOSTPKG_CONFIG since there is only one tool involved. I will
> > > > > > > > work on it and submit a new patch.
> > > > > > > >
> > > > > > >
> > > > > > > Please hold on.
> > > > > > >
> > > > > > > I was also wondering what to do with the "HOST" prefix.
> > > > > > >
> > > > > > > Libraries are usually arch-dependent.
> > > > > > > (in other words, pkg-config should return different library paths
> > > > > > > for $(CC) and $(HOSTCC) )
> > > > > > >
> > > > > > > You already understood this, so you added "HOST" prefix.
> > > > > > >
> > > > > > >
> > > > > > > Please let me take time for further discussion.
> > > > > > > I will come back to this when I get some time.
> > > > > > >
> > > > > > >
> > > > > >
> > > > > > Hi Mashiro,
> > > > > >
> > > > > > I was wondering if you were able to look more into this.
> > > > > >
> > > > > > Thank you!
> > > > > >
> > > > > > -CT
> > > > > >
> > > > > > > In the meantime,
> > > > > > >   a8a5cd8b472ca20e5b8fa649c43b3756867322f8
> > > > > > > as reference info if you have not seen it.
> > > > > > >
> > > > > > >
> > > > > > > How many distros support something like
> > > > > > > "aarch64-linux-gnu-pkg-config"  ?
> > > > > > >
> > > > > > > Ubuntu 18.04 and 20.04 seem to support it.
> > > > > > > I do not know for others.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > >
> > > > >
> > > > >
> > > > > Sorry for the delay.
> > > > > I am OK with the idea of allowing users to override the pkg-config command,
> > > > > but I tend to take time before making a decision.
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > Does anybody have any insight / thoughts about the following points?
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > [Q1]   with/without "HOST" prefix
> > > > >
> > > > >
> > > > > Apparently, "pkg-config" should return different libs/cflags
> > > > > for $(CC) and $(HOSTCC).
> > > > >
> > > > > I think the non-prefixed macro name "PKG_CONFIG" should be
> > > > > reserved for $(CC)  (building for the target system).
> > > >
> > > > Ok. I retract my comment on v4 about removing the HOST prefix then.
> > > >
> > > > >
> > > > > "HOSTPKG_CONFIG" looks unbalanced
> > > > > due to the underscore.
> > > > >
> > > > > Perhaps, "HOST_PKG_CONFIG" might be better?
> > > >
> > > > I'm fine with HOSTPKG_CONFIG (what's in v4); follows the style of
> > > > HOSTCC and HOSTCXX.
> > > >
> > >
> > > Agree, it should follow the style of HOSTCC/HOSTCXX.
> > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > [Q2]    "pkg-config" vs "pkgconf"
> > > > >
> > > > > The traditional pkg-config implementation [1] is not actively
> > > > > maintained these days.
> > > > > The last commit was more than one year ago.
> > > > >
> > > > > The alternative one 'pkgconf' [2] is more active.
> > > > >
> > > > > In fact, Fedora already switched to 'pkgconf' [3].
> > > > > Now 'pkg-config' is just a wrapper of 'pkgconf'.
> > > > > Many distributions already support pkgconf.
> > > > >
> > > > >
> > > > > I considered the shorter macro name "HOSTPKGCONF" and
> > > > >
> > > > >    HOSTPKGCONF  = pkgconf
> > > > >
> > > > > but I am not sure if this is the right decision.
> > > > > Maybe we should stick to "PKG_CONFIG" / "HOST_PKG_CONFIG"
> > > > > for the macro names.
> > > > >
> > > > >
> > > > >   [1]  https://gitlab.freedesktop.org/pkg-config/pkg-config.git
> > > > >   [2]  https://github.com/pkgconf/pkgconf.git
> > > > >   [3]  https://fedoraproject.org/wiki/Changes/pkgconf_as_system_pkg-config_implementation
> > > >
> > > > If the folks sending this are working on CrOS, better find what's in
> > > > their build system. Chun-Tse?
> > > >
> > > > (I feel like I'm behind the times again, like when `apt-get install`
> > > > became old news in favor of `apt install`...)
> > > >
> > >
> > > In Cros we only support pkg-config, and that is the reason we would like
> > > to make this change in upstream.
> > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > [Q3] What is the trend of handling cross-compile by pkg-config (or pkgconf).
> > > > >
> > > > >
> > > > > By default, pkg-config returns the libs/cflags for native builds.
> > > > >
> > > > > For cross builds, the search paths for the *.pc files must be changed
> > > > > via the "PKG_CONFIG_LIBDIR" environment variable.
> > > > >
> > > > > To ease this, some distributions provide  <triplet>-pkg-config
> > > > > (for example,   aarch64-linux-gnu-pkg-config).
> > > > > This became the nationale for tools/build/feature/Makefile defining:
> > > > >
> > > > >    PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
> > > > >
> > > > > But, this wrapper shell script is not always available.
> > > > > I do not know how to do it with the LLVM tool suite.
> > > > > I am not quite sure if this is the global solution.
> > > > >
> > > > >
> > > > > These days, pkgconf supports another way, .personality file [4]
> > > > > to specify the .pc search paths for cross builds.
> > > > >
> > > > > Is it reasonable to use an option to distinguish native / cross builds
> > > > > and use the same macro   "PKG_CONFIG = pkg-config" everywhere ?
> > > > >
> > > > >
> > > > > [4] http://manpages.ubuntu.com/manpages/focal/en/man5/pkgconf-personality.5.html
> > > >
> > > > I'm not sure, but do we need to cross that bridge for this patch if
> > > > it's just adding support for the HOST? No cross pkg-config necessary,
> > > > yet. (Famous last words).
> > >
> > > Agree with Nick.
> > >
> > > Thanks,
> > > CT
> > > > --
> > > > Thanks,
> > > > ~Nick Desaulniers
> >
> > Hi Masahiro,
> >
> > I was wondering if you have any suggestions and thoughts.
> >
> > Thank you!
> >
> > -CT
>
>
> Nobody was opposed to the macro name HOST_KG_CONFIG,
> so I am fine.
>
>
>
> I still see inconsistency in your patch, though.
>
>
> For example, you did
>
>        echo >&2 "* 'make xconfig' requires '${HOSTPKG_CONFIG}'. Please
> install it."
>
> in scripts/kconfig/qconf-cfg.sh
>
>
> but, you kept
>
>        echo >&2 "* 'make gconfig' requires 'pkg-config'. Please install it."
>
> in scripts/kconfig/gconf-cfg.sh
>
>
>
>
> Also, I prefer "kbuild:" to "config:"
> for the patch subject.
>
>
> --
> Best Regards
> Masahiro Yamada

Hi Masahiro,

Thanks for your review and suggestions! I sent a new patch for the fix:
https://lore.kernel.org/all/20220401231801.1532486-1-ctshao@google.com/
Just wondering if I should also do the same change for the pkg-config in
comment in kconfig shell scripts?

Thanks,
CT


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-04-01 23:42 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-06 22:30 [PATCH v4] config: Allow kernel installation packaging to override pkg-config Chun-Tse Shao
2022-03-07 18:17 ` Nick Desaulniers
2022-03-07 22:50   ` Chun-Tse Shao
2022-03-08  4:01     ` Masahiro Yamada
2022-03-08  5:26       ` Chun-Tse Shao
2022-03-16  2:51       ` Chun-Tse Shao
2022-03-22  7:42         ` Masahiro Yamada
2022-03-22 17:19           ` Nick Desaulniers
2022-03-22 20:21             ` Chun-Tse Shao
2022-03-31 21:58               ` Chun-Tse Shao
2022-04-01 14:42                 ` Masahiro Yamada
2022-04-01 23:42                   ` Chun-Tse Shao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.