On Thu 24 Nov 2022 00:18:27 GMT, Masahiro Yamada wrote: > Refactor Makefile and use read-file macro. For Make >= 4.2, it can > read > out a file by using the built-in function. > > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > --- Reviewed-by: Nicolas Schier <nicolas@xxxxxxxxx> > > (no changes since v1) > > scripts/kconfig/.gitignore | 4 +++- > scripts/kconfig/Makefile | 43 +++++++++++++++++++----------------- > scripts/kconfig/gconf-cfg.sh | 7 ++++-- > scripts/kconfig/mconf-cfg.sh | 25 ++++++++++++--------- > scripts/kconfig/nconf-cfg.sh | 23 ++++++++++--------- > scripts/kconfig/qconf-cfg.sh | 10 ++++++--- > scripts/remove-stale-files | 2 ++ > 7 files changed, 67 insertions(+), 47 deletions(-) > > diff --git a/scripts/kconfig/.gitignore b/scripts/kconfig/.gitignore > index 500e7424b3ef..c8a3f9cd52f0 100644 > --- a/scripts/kconfig/.gitignore > +++ b/scripts/kconfig/.gitignore > @@ -1,5 +1,7 @@ > # SPDX-License-Identifier: GPL-2.0-only > /conf > /[gmnq]conf > -/[gmnq]conf-cfg > +/[gmnq]conf-cflags > +/[gmnq]conf-libs > +/qconf-bin > /qconf-moc.cc > diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile > index b8ef0fb4bbef..da7da9775a4b 100644 > --- a/scripts/kconfig/Makefile > +++ b/scripts/kconfig/Makefile > @@ -159,11 +159,12 @@ conf-objs := conf.o $(common-objs) > hostprogs += nconf > nconf-objs := nconf.o nconf.gui.o $(common-objs) > > -HOSTLDLIBS_nconf = $(shell . $(obj)/nconf-cfg && echo $$libs) > -HOSTCFLAGS_nconf.o = $(shell . $(obj)/nconf-cfg && echo $$cflags) > -HOSTCFLAGS_nconf.gui.o = $(shell . $(obj)/nconf-cfg && echo $$cflags) > +HOSTLDLIBS_nconf = $(call read-file, $(obj)/nconf-libs) > +HOSTCFLAGS_nconf.o = $(call read-file, $(obj)/nconf-cflags) > +HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) > > -$(obj)/nconf.o $(obj)/nconf.gui.o: $(obj)/nconf-cfg > +$(obj)/nconf: | $(obj)/nconf-libs > +$(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags > > # mconf: Used for the menuconfig target based on lxdialog > hostprogs += mconf > @@ -171,27 +172,28 @@ lxdialog := $(addprefix lxdialog/, \ > checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) > mconf-objs := mconf.o $(lxdialog) $(common-objs) > > -HOSTLDLIBS_mconf = $(shell . $(obj)/mconf-cfg && echo $$libs) > +HOSTLDLIBS_mconf = $(call read-file, $(obj)/mconf-libs) > $(foreach f, mconf.o $(lxdialog), \ > - $(eval HOSTCFLAGS_$f = $$(shell . $(obj)/mconf-cfg && echo $$$$cflags))) > + $(eval HOSTCFLAGS_$f = $$(call read-file, $(obj)/mconf-cflags))) > > -$(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/mconf-cfg > +$(obj)/mconf: | $(obj)/mconf-libs > +$(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags > > # qconf: Used for the xconfig target based on Qt > hostprogs += qconf > qconf-cxxobjs := qconf.o qconf-moc.o > qconf-objs := images.o $(common-objs) > > -HOSTLDLIBS_qconf = $(shell . $(obj)/qconf-cfg && echo $$libs) > -HOSTCXXFLAGS_qconf.o = $(shell . $(obj)/qconf-cfg && echo $$cflags) > -HOSTCXXFLAGS_qconf-moc.o = $(shell . $(obj)/qconf-cfg && echo $$cflags) > - > -$(obj)/qconf.o: $(obj)/qconf-cfg > +HOSTLDLIBS_qconf = $(call read-file, $(obj)/qconf-libs) > +HOSTCXXFLAGS_qconf.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) > +HOSTCXXFLAGS_qconf-moc.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) > +$(obj)/qconf: | $(obj)/qconf-libs > +$(obj)/qconf.o $(obj)/qconf-moc.o: | $(obj)/qconf-cflags > > quiet_cmd_moc = MOC $@ > - cmd_moc = $(shell . $(obj)/qconf-cfg && echo $$moc) $< -o $@ > + cmd_moc = $(call read-file, $(obj)/qconf-bin)/moc $< -o $@ > > -$(obj)/qconf-moc.cc: $(src)/qconf.h $(obj)/qconf-cfg FORCE > +$(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin > $(call if_changed,moc) > > targets += qconf-moc.cc > @@ -200,15 +202,16 @@ targets += qconf-moc.cc > hostprogs += gconf > gconf-objs := gconf.o images.o $(common-objs) > > -HOSTLDLIBS_gconf = $(shell . $(obj)/gconf-cfg && echo $$libs) > -HOSTCFLAGS_gconf.o = $(shell . $(obj)/gconf-cfg && echo $$cflags) > +HOSTLDLIBS_gconf = $(call read-file, $(obj)/gconf-libs) > +HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) > > -$(obj)/gconf.o: $(obj)/gconf-cfg > +$(obj)/gconf: | $(obj)/gconf-libs > +$(obj)/gconf.o: | $(obj)/gconf-cflags > > # check if necessary packages are available, and configure build flags > -filechk_conf_cfg = $(CONFIG_SHELL) $< > +cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin) > > -$(obj)/%conf-cfg: $(src)/%conf-cfg.sh FORCE > - $(call filechk,conf_cfg) > +$(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh > + $(call cmd,conf_cfg) > > clean-files += *conf-cfg > diff --git a/scripts/kconfig/gconf-cfg.sh b/scripts/kconfig/gconf-cfg.sh > index cbd90c28c05f..040d8f338820 100755 > --- a/scripts/kconfig/gconf-cfg.sh > +++ b/scripts/kconfig/gconf-cfg.sh > @@ -1,6 +1,9 @@ > #!/bin/sh > # SPDX-License-Identifier: GPL-2.0 > > +cflags=$1 > +libs=$2 > + > PKG="gtk+-2.0 gmodule-2.0 libglade-2.0" > > if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then > @@ -26,5 +29,5 @@ if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then > exit 1 > fi > > -echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\" > -echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\" > +${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} > +${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} > diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh > index 025b565e0b7c..1e61f50a5905 100755 > --- a/scripts/kconfig/mconf-cfg.sh > +++ b/scripts/kconfig/mconf-cfg.sh > @@ -1,19 +1,22 @@ > #!/bin/sh > # SPDX-License-Identifier: GPL-2.0 > > +cflags=$1 > +libs=$2 > + > PKG="ncursesw" > PKG2="ncurses" > > 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)\" > + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} > + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} > exit 0 > fi > > - if ${HOSTPKG_CONFIG} --exists $PKG2; then > - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\" > - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\" > + if ${HOSTPKG_CONFIG} --exists ${PKG2}; then > + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} > + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} > exit 0 > fi > fi > @@ -22,22 +25,22 @@ fi > # (Even if it is installed, some distributions such as openSUSE cannot > # find ncurses by pkg-config.) > if [ -f /usr/include/ncursesw/ncurses.h ]; then > - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncursesw\" > - echo libs=\"-lncursesw\" > + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} > + echo -lncursesw > ${libs} > exit 0 > fi > > if [ -f /usr/include/ncurses/ncurses.h ]; then > - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncurses\" > - echo libs=\"-lncurses\" > + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} > + echo -lncurses > ${libs} > exit 0 > fi > > # As a final fallback before giving up, check if $HOSTCC knows of a default > # ncurses installation (e.g. from a vendor-specific sysroot). > if echo '#include <ncurses.h>' | ${HOSTCC} -E - >/dev/null 2>&1; then > - echo cflags=\"-D_GNU_SOURCE\" > - echo libs=\"-lncurses\" > + echo -D_GNU_SOURCE > ${cflags} > + echo -lncurses > ${libs} > exit 0 > fi > > diff --git a/scripts/kconfig/nconf-cfg.sh b/scripts/kconfig/nconf-cfg.sh > index 3a10bac2adb3..f871a2160e36 100755 > --- a/scripts/kconfig/nconf-cfg.sh > +++ b/scripts/kconfig/nconf-cfg.sh > @@ -1,19 +1,22 @@ > #!/bin/sh > # SPDX-License-Identifier: GPL-2.0 > > +cflags=$1 > +libs=$2 > + > PKG="ncursesw menuw panelw" > PKG2="ncurses menu panel" > > 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)\" > + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} > + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} > exit 0 > fi > > if ${HOSTPKG_CONFIG} --exists $PKG2; then > - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\" > - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\" > + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} > + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} > exit 0 > fi > fi > @@ -22,20 +25,20 @@ fi > # (Even if it is installed, some distributions such as openSUSE cannot > # find ncurses by pkg-config.) > if [ -f /usr/include/ncursesw/ncurses.h ]; then > - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncursesw\" > - echo libs=\"-lncursesw -lmenuw -lpanelw\" > + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} > + echo -lncursesw -lmenuw -lpanelw > ${libs} > exit 0 > fi > > if [ -f /usr/include/ncurses/ncurses.h ]; then > - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncurses\" > - echo libs=\"-lncurses -lmenu -lpanel\" > + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} > + echo -lncurses -lmenu -lpanel > ${libs} > exit 0 > fi > > if [ -f /usr/include/ncurses.h ]; then > - echo cflags=\"-D_GNU_SOURCE\" > - echo libs=\"-lncurses -lmenu -lpanel\" > + echo -D_GNU_SOURCE > ${cflags} > + echo -lncurses -lmenu -lpanel > ${libs} > exit 0 > fi > > diff --git a/scripts/kconfig/qconf-cfg.sh b/scripts/kconfig/qconf-cfg.sh > index ad652cb53947..117f36e568fc 100755 > --- a/scripts/kconfig/qconf-cfg.sh > +++ b/scripts/kconfig/qconf-cfg.sh > @@ -1,6 +1,10 @@ > #!/bin/sh > # SPDX-License-Identifier: GPL-2.0 > > +cflags=$1 > +libs=$2 > +bin=$3 > + > PKG="Qt5Core Qt5Gui Qt5Widgets" > > if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then > @@ -11,9 +15,9 @@ if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then > fi > > 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\" > + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} > + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} > + ${HOSTPKG_CONFIG} --variable=host_bins Qt5Core > ${bin} > exit 0 > fi > > diff --git a/scripts/remove-stale-files b/scripts/remove-stale-files > index ccadfa3afb2b..64b14aa5aebf 100755 > --- a/scripts/remove-stale-files > +++ b/scripts/remove-stale-files > @@ -47,3 +47,5 @@ rm -f arch/riscv/purgatory/kexec-purgatory.c > rm -f scripts/extract-cert > > rm -f arch/x86/purgatory/kexec-purgatory.c > + > +rm -f scripts/kconfig/[gmnq]conf-cfg > -- > 2.34.1 -- epost|xmpp: nicolas@xxxxxxxxx irc://oftc.net/nsc ↳ gpg: 18ed 52db e34f 860e e9fb c82b 7d97 0932 55a0 ce7f -- frykten for herren er opphav til kunnskap --
Attachment:
signature.asc
Description: PGP signature