From: Sam Ravnborg <sam@ravnborg.org>
To: Olaf Hering <olh@suse.de>, Tom Rini <trini@kernel.crashing.org>,
linuxppc-dev@lists.linuxppc.org
Subject: Re: linuxppc-2.5 CONFIG_BOOT_LOAD undefined
Date: Sat, 16 Aug 2003 09:49:47 +0200 [thread overview]
Message-ID: <20030816074947.GA4087@mars.ravnborg.org> (raw)
In-Reply-To: <20030814210257.GA13004@mars.ravnborg.org>
On Thu, Aug 14, 2003 at 11:02:57PM +0200, Sam Ravnborg wrote:
>
> I will try to fix it during the weekend.
Olaf - care to try the following patch.
It is on top of linus's tree, but I expect it to apply
to your ppc tree as well.
I was able to reprocduce the error here - and this fixed it for me.
But I may have overlooked a subtle combination of usage.
PS - Still needs to update a few comments in the patch.
Sam
===== Makefile 1.420 vs edited =====
--- 1.420/Makefile Sat Aug 9 06:09:32 2003
+++ edited/Makefile Sat Aug 16 09:42:09 2003
@@ -243,17 +243,15 @@
comma := ,
depfile = $(subst $(comma),_,$(@D)/.$(@F).d)
-noconfig_targets := xconfig gconfig menuconfig config oldconfig randconfig \
- defconfig allyesconfig allnoconfig allmodconfig \
- clean mrproper distclean rpm \
- help tags TAGS cscope %docs \
- checkconfig checkhelp checkincludes
+# Files to ignore in find ... that searches all of the kernel src
RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \) -prune -o
RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS
+# ===========================================================================
+# Rules shared between *config targets and build targets
+
# Helpers built in scripts/
-# ---------------------------------------------------------------------------
scripts/docproc scripts/fixdep scripts/split-include : scripts ;
@@ -261,9 +259,49 @@
scripts:
$(Q)$(MAKE) $(build)=scripts
-# Objects we will link into vmlinux / subdirs we need to visit
-# ---------------------------------------------------------------------------
+# To make sure we do not include .config for any of the *config targets
+# catch them early, and hand them over to scripts/kconfig/Makefile
+# It is allowed to specify more targets when calling make, including
+# mixing *config targets and build targets.
+# For example 'make oldconfig all'.
+# Detect this situation, and make a second invocation of make so
+# .config is not included in this case either.
+
+config-targets := 0
+mixed-targets := 0
+ifneq ($(filter config %config,$(MAKECMDGOALS)),)
+ config-targets := 1
+ ifneq ($(filter-out config %config,$(MAKECMDGOALS)),)
+ mixed-targets := 1
+ endif
+endif
+
+ifeq ($(mixed-targets),1)
+# ===========================================================================
+# We're called with mixed targets (*config and build targets).
+# Handle them one after the other.
+
+%:: FORCE
+ $(Q)$(MAKE) $@
+
+else
+ifeq ($(config-targets),1)
+# ===========================================================================
+# *config targets only - make sure prerequisites are updated, and descend
+# in scripts/kconfig to make the *config target
+
+%config: scripts/fixdep FORCE
+ $(Q)$(MAKE) $(build)=scripts/kconfig $@
+config : scripts/fixdep FORCE
+ $(Q)$(MAKE) $(build)=scripts/kconfig $@
+
+else
+# ===========================================================================
+# Build targets only - this includes vmlinux, arch specific targets, clean
+# targets and others. In general all targets except *config targets.
+
+# Objects we will link into vmlinux / subdirs we need to visit
init-y := init/
drivers-y := drivers/ sound/
net-y := net/
@@ -271,14 +309,8 @@
core-y := usr/
SUBDIRS :=
-ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
-
-export include_config := 1
-
-include .config
-endif
-
include arch/$(ARCH)/Makefile
# Let architecture Makefiles change CPPFLAGS if needed
@@ -304,10 +336,8 @@
libs-y2 := $(patsubst %/, %/built-in.o, $(libs-y))
libs-y := $(libs-y1) $(libs-y2)
-ifdef include_config
-
# Here goes the main Makefile
-# ===========================================================================
+# ---------------------------------------------------------------------------
#
# If the user gave a *config target, it'll be handled in another
# section below, since in this case we cannot include .config
@@ -608,72 +638,6 @@
echo "#endif" )
endef
-else # ifdef include_config
-
-ifeq ($(filter-out $(noconfig_targets),$(MAKECMDGOALS)),)
-
-# Targets which don't need .config
-# ===========================================================================
-#
-# These targets basically have their own Makefile - not quite, but at
-# least its own exclusive section in the same Makefile. The reason for
-# this is the following:
-# To know the configuration, the main Makefile has to include
-# .config. That's a obviously a problem when .config doesn't exist
-# yet, but that could be kludged around with only including it if it
-# exists.
-# However, the larger problem is: If you run make *config, make will
-# include the old .config, then execute your *config. It will then
-# notice that a piece it included (.config) did change and restart from
-# scratch. Which will cause execution of *config again. You get the
-# picture.
-# If we don't explicitly let the Makefile know that .config is changed
-# by *config (the old way), it won't reread .config after *config,
-# thus working with possibly stale values - we don't that either.
-#
-# So we divide things: This part here is for making *config targets,
-# and other targets which should work when no .config exists yet.
-# The main part above takes care of the rest after a .config exists.
-
-# Kernel configuration
-# ---------------------------------------------------------------------------
-
-.PHONY: oldconfig xconfig gconfig menuconfig config \
- make_with_config rpm
-
-scripts/kconfig/conf scripts/kconfig/mconf scripts/kconfig/qconf scripts/kconfig/gconf: scripts/fixdep FORCE
- $(Q)$(MAKE) $(build)=scripts/kconfig $@
-
-xconfig: scripts/kconfig/qconf
- ./scripts/kconfig/qconf arch/$(ARCH)/Kconfig
-
-gconfig: scripts/kconfig/gconf
- ./scripts/kconfig/gconf arch/$(ARCH)/Kconfig
-
-menuconfig: scripts/kconfig/mconf
- $(Q)$(MAKE) $(build)=scripts/lxdialog
- ./scripts/kconfig/mconf arch/$(ARCH)/Kconfig
-
-config: scripts/kconfig/conf
- ./scripts/kconfig/conf arch/$(ARCH)/Kconfig
-
-oldconfig: scripts/kconfig/conf
- ./scripts/kconfig/conf -o arch/$(ARCH)/Kconfig
-
-randconfig: scripts/kconfig/conf
- ./scripts/kconfig/conf -r arch/$(ARCH)/Kconfig
-
-allyesconfig: scripts/kconfig/conf
- ./scripts/kconfig/conf -y arch/$(ARCH)/Kconfig
-
-allnoconfig: scripts/kconfig/conf
- ./scripts/kconfig/conf -n arch/$(ARCH)/Kconfig
-
-allmodconfig: scripts/kconfig/conf
- ./scripts/kconfig/conf -m arch/$(ARCH)/Kconfig
-
-defconfig: scripts/kconfig/conf
- ./scripts/kconfig/conf -d arch/$(ARCH)/Kconfig
###
# Cleaning is done on three levels.
@@ -778,6 +742,8 @@
# RPM target
# ---------------------------------------------------------------------------
+.PHONY: rpm
+
# If you do a make spec before packing the tarball you can rpm -ta it
spec:
@@ -864,17 +830,8 @@
-name '*.[hcS]' -type f -print | sort \
| xargs $(PERL) -w scripts/checkincludes.pl
-else # ifneq ($(filter-out $(noconfig_targets),$(MAKECMDGOALS)),)
-
-# We're called with both targets which do and do not need
-# .config included. Handle them one after the other.
-# ===========================================================================
-
-%:: FORCE
- $(Q)$(MAKE) $@
-
-endif # ifeq ($(filter-out $(noconfig_targets),$(MAKECMDGOALS)),)
-endif # ifdef include_config
+endif #ifeq ($(config-targets),1)
+endif #ifeq ($(mixed-targets),1)
# FIXME Should go into a make.lib or something
# ===========================================================================
@@ -894,6 +851,7 @@
cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
ifneq ($(cmd_files),)
+ $(cmd_files): ; # Do not try to update dependency files
include $(cmd_files)
endif
===== scripts/Makefile.build 1.38 vs edited =====
--- 1.38/scripts/Makefile.build Thu Jun 12 05:36:33 2003
+++ edited/scripts/Makefile.build Fri Aug 15 20:50:14 2003
@@ -7,9 +7,8 @@
.PHONY: __build
__build:
-ifdef include_config
-include .config
-endif
+# Read .config if it exist, otherwise ignore
+-include .config
include $(obj)/Makefile
===== scripts/kconfig/Makefile 1.6 vs edited =====
--- 1.6/scripts/kconfig/Makefile Sat Mar 15 18:25:56 2003
+++ edited/scripts/kconfig/Makefile Sat Aug 16 09:44:34 2003
@@ -11,6 +11,69 @@
#
#################
+# Targets which don't need .config
+# ===========================================================================
+#
+# These targets basically have their own Makefile - not quite, but at
+# least its own exclusive section in the same Makefile. The reason for
+# this is the following:
+# To know the configuration, the main Makefile has to include
+# .config. That's a obviously a problem when .config doesn't exist
+# yet, but that could be kludged around with only including it if it
+# exists.
+# However, the larger problem is: If you run make *config, make will
+# include the old .config, then execute your *config. It will then
+# notice that a piece it included (.config) did change and restart from
+# scratch. Which will cause execution of *config again. You get the
+# picture.
+# If we don't explicitly let the Makefile know that .config is changed
+# by *config (the old way), it won't reread .config after *config,
+# thus working with possibly stale values - we don't that either.
+#
+# So we divide things: This part here is for making *config targets,
+# and other targets which should work when no .config exists yet.
+# The main part above takes care of the rest after a .config exists.
+
+# Kernel configuration options
+# These targets are used from top-level makefile
+# ---------------------------------------------------------------------------
+
+.PHONY: oldconfig xconfig gconfig menuconfig config
+
+xconfig: scripts/kconfig/qconf
+ ./scripts/kconfig/qconf arch/$(ARCH)/Kconfig
+
+gconfig: scripts/kconfig/gconf
+ ./scripts/kconfig/gconf arch/$(ARCH)/Kconfig
+
+menuconfig: scripts/kconfig/mconf
+ $(Q)$(MAKE) $(build)=scripts/lxdialog
+ ./scripts/kconfig/mconf arch/$(ARCH)/Kconfig
+
+config: scripts/kconfig/conf
+ ./scripts/kconfig/conf arch/$(ARCH)/Kconfig
+
+oldconfig: scripts/kconfig/conf
+ ./scripts/kconfig/conf -o arch/$(ARCH)/Kconfig
+
+.PHONY: randconfig allyesconfig allnoconfig allmodconfig defconfig
+
+randconfig: scripts/kconfig/conf
+ ./scripts/kconfig/conf -r arch/$(ARCH)/Kconfig
+
+allyesconfig: scripts/kconfig/conf
+ ./scripts/kconfig/conf -y arch/$(ARCH)/Kconfig
+
+allnoconfig: scripts/kconfig/conf
+ ./scripts/kconfig/conf -n arch/$(ARCH)/Kconfig
+
+allmodconfig: scripts/kconfig/conf
+ ./scripts/kconfig/conf -m arch/$(ARCH)/Kconfig
+
+defconfig: scripts/kconfig/conf
+ ./scripts/kconfig/conf -d arch/$(ARCH)/Kconfig
+
+
# object files used by all lkc flavours
libkconfig-objs := zconf.tab.o
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
next prev parent reply other threads:[~2003-08-16 7:49 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-08-13 7:51 linuxppc-2.5 CONFIG_BOOT_LOAD undefined Olaf Hering
2003-08-13 23:35 ` Tom Rini
2003-08-14 10:39 ` Olaf Hering
2003-08-14 16:05 ` Tom Rini
2003-08-14 16:45 ` Olaf Hering
2003-08-14 16:54 ` Tom Rini
2003-08-14 17:44 ` Olaf Hering
2003-08-14 18:43 ` Tom Rini
2003-08-14 19:31 ` Sam Ravnborg
2003-08-14 19:34 ` Olaf Hering
2003-08-14 21:02 ` Sam Ravnborg
2003-08-16 7:49 ` Sam Ravnborg [this message]
2003-08-16 11:41 ` Olaf Hering
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030816074947.GA4087@mars.ravnborg.org \
--to=sam@ravnborg.org \
--cc=linuxppc-dev@lists.linuxppc.org \
--cc=olh@suse.de \
--cc=trini@kernel.crashing.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.