Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

kconfig: refactor Makefile to reduce process forks

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@kernel.org>
Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>

+68 -48
+3 -1
scripts/kconfig/.gitignore
··· 1 1 # SPDX-License-Identifier: GPL-2.0-only 2 2 /conf 3 3 /[gmnq]conf 4 - /[gmnq]conf-cfg 4 + /[gmnq]conf-cflags 5 + /[gmnq]conf-libs 6 + /qconf-bin 5 7 /qconf-moc.cc
+24 -21
scripts/kconfig/Makefile
··· 159 159 hostprogs += nconf 160 160 nconf-objs := nconf.o nconf.gui.o $(common-objs) 161 161 162 - HOSTLDLIBS_nconf = $(shell . $(obj)/nconf-cfg && echo $$libs) 163 - HOSTCFLAGS_nconf.o = $(shell . $(obj)/nconf-cfg && echo $$cflags) 164 - HOSTCFLAGS_nconf.gui.o = $(shell . $(obj)/nconf-cfg && echo $$cflags) 162 + HOSTLDLIBS_nconf = $(call read-file, $(obj)/nconf-libs) 163 + HOSTCFLAGS_nconf.o = $(call read-file, $(obj)/nconf-cflags) 164 + HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags) 165 165 166 - $(obj)/nconf.o $(obj)/nconf.gui.o: $(obj)/nconf-cfg 166 + $(obj)/nconf: | $(obj)/nconf-libs 167 + $(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags 167 168 168 169 # mconf: Used for the menuconfig target based on lxdialog 169 170 hostprogs += mconf ··· 172 171 checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) 173 172 mconf-objs := mconf.o $(lxdialog) $(common-objs) 174 173 175 - HOSTLDLIBS_mconf = $(shell . $(obj)/mconf-cfg && echo $$libs) 174 + HOSTLDLIBS_mconf = $(call read-file, $(obj)/mconf-libs) 176 175 $(foreach f, mconf.o $(lxdialog), \ 177 - $(eval HOSTCFLAGS_$f = $$(shell . $(obj)/mconf-cfg && echo $$$$cflags))) 176 + $(eval HOSTCFLAGS_$f = $$(call read-file, $(obj)/mconf-cflags))) 178 177 179 - $(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/mconf-cfg 178 + $(obj)/mconf: | $(obj)/mconf-libs 179 + $(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags 180 180 181 181 # qconf: Used for the xconfig target based on Qt 182 182 hostprogs += qconf 183 183 qconf-cxxobjs := qconf.o qconf-moc.o 184 184 qconf-objs := images.o $(common-objs) 185 185 186 - HOSTLDLIBS_qconf = $(shell . $(obj)/qconf-cfg && echo $$libs) 187 - HOSTCXXFLAGS_qconf.o = $(shell . $(obj)/qconf-cfg && echo $$cflags) 188 - HOSTCXXFLAGS_qconf-moc.o = $(shell . $(obj)/qconf-cfg && echo $$cflags) 189 - 190 - $(obj)/qconf.o: $(obj)/qconf-cfg 186 + HOSTLDLIBS_qconf = $(call read-file, $(obj)/qconf-libs) 187 + HOSTCXXFLAGS_qconf.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) 188 + HOSTCXXFLAGS_qconf-moc.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags) 189 + $(obj)/qconf: | $(obj)/qconf-libs 190 + $(obj)/qconf.o $(obj)/qconf-moc.o: | $(obj)/qconf-cflags 191 191 192 192 quiet_cmd_moc = MOC $@ 193 - cmd_moc = $(shell . $(obj)/qconf-cfg && echo $$moc) $< -o $@ 193 + cmd_moc = $(call read-file, $(obj)/qconf-bin)/moc $< -o $@ 194 194 195 - $(obj)/qconf-moc.cc: $(src)/qconf.h $(obj)/qconf-cfg FORCE 195 + $(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin 196 196 $(call if_changed,moc) 197 197 198 198 targets += qconf-moc.cc ··· 202 200 hostprogs += gconf 203 201 gconf-objs := gconf.o images.o $(common-objs) 204 202 205 - HOSTLDLIBS_gconf = $(shell . $(obj)/gconf-cfg && echo $$libs) 206 - HOSTCFLAGS_gconf.o = $(shell . $(obj)/gconf-cfg && echo $$cflags) 203 + HOSTLDLIBS_gconf = $(call read-file, $(obj)/gconf-libs) 204 + HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags) 207 205 208 - $(obj)/gconf.o: $(obj)/gconf-cfg 206 + $(obj)/gconf: | $(obj)/gconf-libs 207 + $(obj)/gconf.o: | $(obj)/gconf-cflags 209 208 210 209 # check if necessary packages are available, and configure build flags 211 - filechk_conf_cfg = $(CONFIG_SHELL) $< 210 + cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin) 212 211 213 - $(obj)/%conf-cfg: $(src)/%conf-cfg.sh FORCE 214 - $(call filechk,conf_cfg) 212 + $(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh 213 + $(call cmd,conf_cfg) 215 214 216 - clean-files += *conf-cfg 215 + clean-files += *conf-cflags *conf-libs *conf-bin
+5 -2
scripts/kconfig/gconf-cfg.sh
··· 1 1 #!/bin/sh 2 2 # SPDX-License-Identifier: GPL-2.0 3 3 4 + cflags=$1 5 + libs=$2 6 + 4 7 PKG="gtk+-2.0 gmodule-2.0 libglade-2.0" 5 8 6 9 if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then ··· 29 26 exit 1 30 27 fi 31 28 32 - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\" 33 - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\" 29 + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} 30 + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs}
+14 -11
scripts/kconfig/mconf-cfg.sh
··· 1 1 #!/bin/sh 2 2 # SPDX-License-Identifier: GPL-2.0 3 3 4 + cflags=$1 5 + libs=$2 6 + 4 7 PKG="ncursesw" 5 8 PKG2="ncurses" 6 9 7 10 if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then 8 11 if ${HOSTPKG_CONFIG} --exists $PKG; then 9 - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\" 10 - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\" 12 + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} 13 + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} 11 14 exit 0 12 15 fi 13 16 14 - if ${HOSTPKG_CONFIG} --exists $PKG2; then 15 - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\" 16 - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\" 17 + if ${HOSTPKG_CONFIG} --exists ${PKG2}; then 18 + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} 19 + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} 17 20 exit 0 18 21 fi 19 22 fi ··· 25 22 # (Even if it is installed, some distributions such as openSUSE cannot 26 23 # find ncurses by pkg-config.) 27 24 if [ -f /usr/include/ncursesw/ncurses.h ]; then 28 - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncursesw\" 29 - echo libs=\"-lncursesw\" 25 + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} 26 + echo -lncursesw > ${libs} 30 27 exit 0 31 28 fi 32 29 33 30 if [ -f /usr/include/ncurses/ncurses.h ]; then 34 - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncurses\" 35 - echo libs=\"-lncurses\" 31 + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} 32 + echo -lncurses > ${libs} 36 33 exit 0 37 34 fi 38 35 39 36 # As a final fallback before giving up, check if $HOSTCC knows of a default 40 37 # ncurses installation (e.g. from a vendor-specific sysroot). 41 38 if echo '#include <ncurses.h>' | ${HOSTCC} -E - >/dev/null 2>&1; then 42 - echo cflags=\"-D_GNU_SOURCE\" 43 - echo libs=\"-lncurses\" 39 + echo -D_GNU_SOURCE > ${cflags} 40 + echo -lncurses > ${libs} 44 41 exit 0 45 42 fi 46 43
+13 -10
scripts/kconfig/nconf-cfg.sh
··· 1 1 #!/bin/sh 2 2 # SPDX-License-Identifier: GPL-2.0 3 3 4 + cflags=$1 5 + libs=$2 6 + 4 7 PKG="ncursesw menuw panelw" 5 8 PKG2="ncurses menu panel" 6 9 7 10 if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then 8 11 if ${HOSTPKG_CONFIG} --exists $PKG; then 9 - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\" 10 - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\" 12 + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} 13 + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} 11 14 exit 0 12 15 fi 13 16 14 17 if ${HOSTPKG_CONFIG} --exists $PKG2; then 15 - echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\" 16 - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\" 18 + ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags} 19 + ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs} 17 20 exit 0 18 21 fi 19 22 fi ··· 25 22 # (Even if it is installed, some distributions such as openSUSE cannot 26 23 # find ncurses by pkg-config.) 27 24 if [ -f /usr/include/ncursesw/ncurses.h ]; then 28 - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncursesw\" 29 - echo libs=\"-lncursesw -lmenuw -lpanelw\" 25 + echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags} 26 + echo -lncursesw -lmenuw -lpanelw > ${libs} 30 27 exit 0 31 28 fi 32 29 33 30 if [ -f /usr/include/ncurses/ncurses.h ]; then 34 - echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncurses\" 35 - echo libs=\"-lncurses -lmenu -lpanel\" 31 + echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags} 32 + echo -lncurses -lmenu -lpanel > ${libs} 36 33 exit 0 37 34 fi 38 35 39 36 if [ -f /usr/include/ncurses.h ]; then 40 - echo cflags=\"-D_GNU_SOURCE\" 41 - echo libs=\"-lncurses -lmenu -lpanel\" 37 + echo -D_GNU_SOURCE > ${cflags} 38 + echo -lncurses -lmenu -lpanel > ${libs} 42 39 exit 0 43 40 fi 44 41
+7 -3
scripts/kconfig/qconf-cfg.sh
··· 1 1 #!/bin/sh 2 2 # SPDX-License-Identifier: GPL-2.0 3 3 4 + cflags=$1 5 + libs=$2 6 + bin=$3 7 + 4 8 PKG="Qt5Core Qt5Gui Qt5Widgets" 5 9 6 10 if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then ··· 15 11 fi 16 12 17 13 if ${HOSTPKG_CONFIG} --exists $PKG; then 18 - echo cflags=\"-std=c++11 -fPIC $(${HOSTPKG_CONFIG} --cflags $PKG)\" 19 - echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\" 20 - echo moc=\"$(${HOSTPKG_CONFIG} --variable=host_bins Qt5Core)/moc\" 14 + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} 15 + ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} 16 + ${HOSTPKG_CONFIG} --variable=host_bins Qt5Core > ${bin} 21 17 exit 0 22 18 fi 23 19
+2
scripts/remove-stale-files
··· 47 47 rm -f scripts/extract-cert 48 48 49 49 rm -f arch/x86/purgatory/kexec-purgatory.c 50 + 51 + rm -f scripts/kconfig/[gmnq]conf-cfg