kbuild + kconfig: Updates
Subsystems (11)
A number of kbuild updates and Randy's Kconfig.debug
Most important stuff is:
o Get rid og bogus "has no CRC" when building external modules
o Rename *.lds.s to *.lds (*)
o Allow external modules to use host-progs
(*) The renaming of the *.lds file has been doen to allow the kernel to be build with for example Cygwin.
The major outstanding issue with Cygwin/Solaris are availability of certain .h files for the tools in scripts/* and spread in the tree. Tested patches that allows the tools to be build under Cygwin/Solaris are appreciated.
Patches follows this mail.
Everything pushed to:
bk://linux-sam.bkbits.net/kbuild
Sam
kbuild: bogus has no CRC warning
# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2004/08/15 11:54:27+02:00 [email protected]
# kbuild: Bogus "has no CRC" in external module builds
#
# From: Pavel Roskin <[email protected]> # The recent fixes for the external module build have fixed the major # breakage, but they left one annoyance unfixed. If CONFIG_MODVERSIONS is # disabled, a warning is printed for every exported symbol that is has no # CRC. For instance, I see this when compiling the standalone Orinoco # driver on Linux 2.6.6-rc3: # # *** Warning: "__orinoco_down" [/usr/local/src/orinoco/spectrum_cs.ko] has # no CRC! # *** Warning: "hermes_struct_init" [/usr/local/src/orinoco/spectrum_cs.ko] # has no CRC! # *** Warning: "free_orinocodev" [/usr/local/src/orinoco/spectrum_cs.ko] has # no CRC! # [further warnings skipped] # # I have found that the "-i" option for modpost is used for external builds, # whereas the internal modules use "-o". The "-i" option causes read_dump() # in modpost.c to be called. This function sets "modversions" variable # under some conditions that I don't understand. The comment before the # modversions declarations says: "Are we using CONFIG_MODVERSIONS?"
#
# Apparently modpost fails to answer this question. I think it's better to
# use an explicit option rather than a kludge.
#
# The attached patch adds a new option "-m" that is specified if and only if # CONFIG_MODVERSIONS is enabled. The patch has been successfully tested # both with and without CONFIG_MODVERSIONS. # # Signed-off-by: Sam Ravnborg <[email protected]> # # scripts/mod/modpost.c # 2004/08/15 11:54:12+02:00 [email protected] +4 -3 # Do not try to guess modversions - use -m option # # scripts/Makefile.modpost # 2004/08/15 11:54:12+02:00 [email protected] +2 -1 # Pass -m option to modpost if CONFIG_MODVERSIONS # diff -Nru a/scripts/Makefile.modpost b/scripts/Makefile.modpost --- a/scripts/Makefile.modpost 2004-08-15 22:14:34 +02:00 +++ b/scripts/Makefile.modpost 2004-08-15 22:14:34 +02:00 @@ -50,7 +50,8 @@ # Step 2), invoke modpost # Includes step 3,4 quiet_cmd_modpost = MODPOST - cmd_modpost = scripts/mod/modpost \ + cmd_modpost = scripts/mod/modpost \ + $(if $(CONFIG_MODVERSIONS),-m) \ $(if $(KBUILD_EXTMOD),-i,-o) $(symverfile) \ $(filter-out FORCE,$^)
scripts/mod/modpost.c +4 -3
@@ -343,7 +343,6 @@ crc = (unsigned int ) sym->st_value;add_exported_symbol (symname +strlen (CRC_PFX ), mod, &crc); - modversions =1 ; }break ;case SHN_UNDEF :
@@ -649,7 +648,6 @@if (!(mod =find_module (modname))) {if (is_vmlinux (modname)) { - modversions =1 ; have_vmlinux =1 ; } mod =new_module (NOFAIL (strdup (modname)));
@@ -696,10 +694,13 @@char *dump_read =NULL , *dump_write =NULL ;int opt; -while ((opt =getopt (argc, argv,"i:o:" )) !=-1 ) { +while ((opt =getopt (argc, argv,"i:mo:" )) !=-1 ) {switch (opt) {case 'i' : dump_read = optarg; +break ; +case 'm' : + modversions =1 ;break ;case 'o' : dump_write = optarg;
kbuild: *.lds.s -> *.lds rename. Infrastructure
In reply to Sam Ravnborg# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2004/08/15 12:18:07+02:00 [email protected]
# kbuild: Generate *.lds instead of *.lds.s
#
# When building a kernel on platforms where the filesytem do # not distingush between upper and lower case the rule: # .S -> .s did not work. # In a normal build this is only used for linker scripts. # So create a separate rule for .lds files, and use generic cpp flags.
#
# Patch from: Dan Aloni <[email protected]>
# Modified to use cpp flags + added documentation.
#
# Signed-off-by: Sam Ravnborg <[email protected]>
#
# scripts/Makefile.lib
# 2004/08/15 12:17:51+02:00 [email protected] +5 -0
# Add flags to be used for generec preprocessing
#
# scripts/Makefile.build
# 2004/08/15 12:17:51+02:00 [email protected] +8 -0
# Add specific command for preprocessing linker scripts.
#
# arch/i386/kernel/Makefile
# 2004/08/15 12:17:51+02:00 [email protected] +1 -1
# Rename linker script from *lds.s to *.lds
#
# Makefile
# 2004/08/15 12:17:51+02:00 [email protected] +7 -7 # Renmae linker scripts from *.lds.s to *.lds # Set new linker flags
#
# Documentation/kbuild/makefiles.txt
# 2004/08/15 12:17:51+02:00 [email protected] +31 -0
# Documented support for *lds files
#
Documentation/kbuild/makefiles.txt +31 -0
@@ -938,6 +938,37 @@ will be displayed with "make KBUILD_VERBOSE=0". +--- 6.8 Preprocessing linker scripts + + When the vmlinux image is build the linker script: + arch/$(ARCH)/kernel/vmlinux.lds is used. + The script is a preprocessed variant of the file vmlinux.lds.S + located in the same directory. + kbuild knows .lds file and includes a rule *lds.S -> *lds. + + Example: + #arch/i386/kernel/Makefile + always := vmlinux.lds + + #Makefile + export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH) + + The assigment to $(always) is used to tell kbuild to build the + target: vmlinux.lds. + The assignment to $(CPPFLAGS_vmlinux.lds) tell kbuild to use the + specified options when building the target vmlinux.lds. + + When building the *.lds target kbuild used the variakles: + CPPFLAGS : Set in top-level Makefile + EXTRA_CPPFLAGS : May be set in the kbuild makefile + CPPFLAGS_$(@F) : Target specific flags. + Note that the full filename is used in this + assignment. + + The kbuild infrastructure for *lds file are used in several + architecture specific files. + + === 7 Kbuild Variables The top Makefile exports the following variables:
Makefile +7 -7
@@ -545,7 +545,7 @@ quiet_cmd_sysmap = SYSMAP cmd_sysmap = $(CONFIG_SHELL) $(srctree)/scripts/mksysmap -LDFLAGS_vmlinux += -T arch/$(ARCH)/kernel/vmlinux.lds.s +LDFLAGS_vmlinux += -T arch/$(ARCH)/kernel/vmlinux.lds # Generate section listing all symbols and add it into vmlinux # It's a three stage process:
@@ -591,13 +591,13 @@ .tmp_kallsyms%.S: .tmp_vmlinux% $(KALLSYMS) $(call cmd,kallsyms) -.tmp_vmlinux1: $(vmlinux-objs) arch/$(ARCH)/kernel/vmlinux.lds.s FORCE +.tmp_vmlinux1: $(vmlinux-objs) arch/$(ARCH)/kernel/vmlinux.lds FORCE $(call if_changed_rule,vmlinux__) -.tmp_vmlinux2: $(vmlinux-objs) .tmp_kallsyms1.o arch/$(ARCH)/kernel/vmlinux.lds.s FORCE +.tmp_vmlinux2: $(vmlinux-objs) .tmp_kallsyms1.o arch/$(ARCH)/kernel/vmlinux.lds FORCE $(call if_changed_rule,vmlinux__) -.tmp_vmlinux3: $(vmlinux-objs) .tmp_kallsyms2.o arch/$(ARCH)/kernel/vmlinux.lds.s FORCE +.tmp_vmlinux3: $(vmlinux-objs) .tmp_kallsyms2.o arch/$(ARCH)/kernel/vmlinux.lds FORCE $(call if_changed_rule,vmlinux__) endif
@@ -618,13 +618,13 @@ $(rule_verify_kallsyms) endef -vmlinux: $(vmlinux-objs) $(kallsyms.o) arch/$(ARCH)/kernel/vmlinux.lds.s FORCE +vmlinux: $(vmlinux-objs) $(kallsyms.o) arch/$(ARCH)/kernel/vmlinux.lds FORCE $(call if_changed_rule,vmlinux) # The actual objects are generated when descending, # make sure no implicit rule kicks in -$(sort $(vmlinux-objs)) arch/$(ARCH)/kernel/vmlinux.lds.s: $(vmlinux-dirs) ; +$(sort $(vmlinux-objs)) arch/$(ARCH)/kernel/vmlinux.lds: $(vmlinux-dirs) ; # Handle descending into subdirectories listed in $(vmlinux-dirs) # Preset locale variables to speed up the build process. Limit locale
@@ -687,7 +687,7 @@ # Leave this as default for preprocessing vmlinux.lds.S, which is now # done in arch/$(ARCH)/kernel/Makefile -export AFLAGS_vmlinux.lds.o += -P -C -U$(ARCH) +export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH) # Single targets # ---------------------------------------------------------------------------
arch/i386/kernel/Makefile +1 -1
@@ -2,7 +2,7 @@ # Makefile for the linux kernel. # -extra-y := head.o init_task.o vmlinux.lds.s +extra-y := head.o init_task.o vmlinux.lds obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o vm86.o \ ptrace.o i8259.o ioport.o ldt.o setup.o time.o sys_i386.o \
scripts/Makefile.build +8 -0
@@ -219,6 +219,14 @@ targets += $(real-objs-y) $(real-objs-m) $(lib-y) targets += $(extra-y) $(MAKECMDGOALS) $(always) +# Linker scripts preprocessor (.lds.S -> .lds) +# --------------------------------------------------------------------------- +quiet_cmd_cpp_lds_S = LDS $@ + cmd_cpp_lds_S = $(CPP) $(cpp_flags) -D__ASSEMBLY__ -o $@ $< + +%.lds: %.lds.S FORCE + $(call if_changed_dep,cpp_lds_S) + # Build the compiled-in targets # ---------------------------------------------------------------------------
scripts/Makefile.lib +5 -0
@@ -100,6 +100,7 @@ _c_flags = $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(*F).o) _a_flags = $(AFLAGS) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o) +_cpp_flags = $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CPPFLAGS_$(@F)) # If building the kernel in a separate objtree expand all occurrences # of -Idir to -I$(srctree)/dir except for absolute paths (starting with '/').
@@ -107,6 +108,7 @@ ifeq ($(KBUILD_SRC),) __c_flags = $(_c_flags) __a_flags = $(_a_flags) +__cpp_flags = $(_cpp_flags) else # Prefix -I with $(srctree) if it is not an absolute path
@@ -120,6 +122,7 @@ # FIXME: Replace both with specific CFLAGS* statements in the makefiles __c_flags = $(call addtree,-I$(obj)) $(call flags,_c_flags) __a_flags = $(call flags,_a_flags) +__cpp_flags = $(call flags,_cpp_flags) endif c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \
@@ -128,6 +131,8 @@ a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \ $(__a_flags) $(modkern_aflags) + +cpp_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(__cpp_flags) ld_flags = $(LDFLAGS) $(EXTRA_LDFLAGS)
kbuild/all archs: Rename all *.lds.s to *.lds
In reply to Sam Ravnborg# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2004/08/15 20:21:00+02:00 [email protected]
# kbuild/all archs: Rename *.lds.s to *.lds
#
# For all architectures use the new name for linker definition scripts.
# Based on patch from: Dan Aloni <[email protected]>
#
# Signed-off-by: Sam Ravnborg <[email protected]>
#
# arch/x86_64/kernel/Makefile
# 2004/08/15 20:20:44+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/x86_64/kernel/Makefile-HEAD
# 2004/08/15 20:20:44+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/v850/kernel/Makefile
# 2004/08/15 20:20:44+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/um/kernel/Makefile
# 2004/08/15 20:20:44+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/um/Makefile
# 2004/08/15 20:20:44+02:00 [email protected] +4 -4
# Renamed *.lds.s to *.lds
#
# arch/um/Makefile-skas
# 2004/08/15 20:20:44+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/sparc64/kernel/Makefile
# 2004/08/15 20:20:44+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/sparc64/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/sparc/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/sparc/boot/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/sh64/boot/compressed/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +3 -3
# Renamed *.lds.s to *.lds
#
# arch/sh/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/sh/boot/compressed/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/sh/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/s390/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/ppc64/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/ppc/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/ppc/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/parisc/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/mips/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/mips/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/m68knommu/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/m68k/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/ia64/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +5 -5
# Renamed *.lds.s to *.lds
#
# arch/h8300/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/cris/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/cris/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/arm26/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/arm26/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/arm/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/arm/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
# arch/alpha/kernel/Makefile
# 2004/08/15 20:20:43+02:00 [email protected] +1 -1
# Renamed *.lds.s to *.lds
#
arch/alpha/kernel/Makefile +1 -1
@@ -2,7 +2,7 @@ # Makefile for the linux kernel. # -extra-y := head.o vmlinux.lds.s +extra-y := head.o vmlinux.lds EXTRA_AFLAGS := $(CFLAGS) EXTRA_CFLAGS := -Werror -Wno-sign-compare
arch/arm/Makefile +1 -1
@@ -9,7 +9,7 @@ LDFLAGS_vmlinux :=-p --no-undefined -X LDFLAGS_BLOB :=--format binary -AFLAGS_vmlinux.lds.o = -DTEXTADDR=$(TEXTADDR) -DDATAADDR=$(DATAADDR) +CPPFLAGS_vmlinux.lds = -DTEXTADDR=$(TEXTADDR) -DDATAADDR=$(DATAADDR) OBJCOPYFLAGS :=-O binary -R .note -R .comment -S GZFLAGS :=-9 #CFLAGS +=-pipe
arch/arm/kernel/Makefile +1 -1
@@ -26,7 +26,7 @@ head-y := head.o obj-$(CONFIG_DEBUG_LL) += debug.o -extra-y := $(head-y) init_task.o vmlinux.lds.s +extra-y := $(head-y) init_task.o vmlinux.lds # Spell out some dependencies that aren't automatically figured out $(obj)/entry-armv.o: $(obj)/entry-header.S include/asm-arm/constants.h
arch/arm26/Makefile +1 -1
@@ -9,7 +9,7 @@ LDFLAGS_vmlinux :=-p -X LDFLAGS_BLOB :=--format binary -AFLAGS_vmlinux.lds.o = -DTEXTADDR=$(TEXTADDR) -DDATAADDR=$(DATAADDR) +CPPFLAGS_vmlinux.lds = -DTEXTADDR=$(TEXTADDR) -DDATAADDR=$(DATAADDR) OBJCOPYFLAGS :=-O binary -R .note -R .comment -S GZFLAGS :=-9
arch/arm26/kernel/Makefile +1 -1
@@ -14,5 +14,5 @@ obj-$(CONFIG_FIQ) += fiq.o obj-$(CONFIG_MODULES) += armksyms.o -extra-y := init_task.o vmlinux.lds.s +extra-y := init_task.o vmlinux.lds
arch/cris/Makefile +1 -1
@@ -29,7 +29,7 @@ OBJCOPYFLAGS := -O binary -R .note -R .comment -S -AFLAGS_vmlinux.lds.o = -DDRAM_VIRTUAL_BASE=0x$(CONFIG_ETRAX_DRAM_VIRTUAL_BASE) +CPPFLAGS_vmlinux.lds = -DDRAM_VIRTUAL_BASE=0x$(CONFIG_ETRAX_DRAM_VIRTUAL_BASE) AFLAGS += -mlinux CFLAGS := $(CFLAGS) -mlinux -march=$(arch-y) -pipe
arch/cris/kernel/Makefile +1 -1
@@ -3,7 +3,7 @@ # Makefile for the linux kernel. # -extra-y := vmlinux.lds.s +extra-y := vmlinux.lds obj-y := process.o traps.o irq.o ptrace.o setup.o \ time.o sys_cris.o semaphore.o
arch/h8300/kernel/Makefile +1 -1
@@ -2,7 +2,7 @@ # Makefile for the linux kernel. # -extra-y := vmlinux.lds.s +extra-y := vmlinux.lds obj-y := process.o traps.o ptrace.o ints.o \ sys_h8300.o time.o semaphore.o signal.o \
arch/ia64/kernel/Makefile +5 -5
@@ -2,7 +2,7 @@ # Makefile for the linux kernel. # -extra-y := head.o init_task.o vmlinux.lds.s +extra-y := head.o init_task.o vmlinux.lds obj-y := acpi.o entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o irq_ia64.o \ irq_lsapic.o ivt.o machvec.o pal.o patch.o process.o perfmon.o ptrace.o sal.o \
@@ -21,25 +21,25 @@ # The gate DSO image is built using a special linker script. targets += gate.so gate-syms.o -extra-y += gate.so gate-syms.o gate.lds.s gate.o +extra-y := gate.so gate-syms.o gate.lds gate.o # fp_emulate() expects f2-f5,f16-f31 to contain the user-level state. CFLAGS_traps.o += -mfixed-range=f2-f5,f16-f31 -AFLAGS_gate.lds.o += -P -C -U$(ARCH) +CPPFLAGS_gate.lds := -P -C -U$(ARCH) quiet_cmd_gate = GATE $@ cmd_gate = $(CC) -nostdlib $(GATECFLAGS_$(@F)) -Wl,-T,$(filter-out FORCE,$^) -o $@ GATECFLAGS_gate.so = -shared -s -Wl,-soname=linux-gate.so.1 -$(obj)/gate.so: $(obj)/gate.lds.s $(obj)/gate.o FORCE +$(obj)/gate.so: $(obj)/gate.lds $(obj)/gate.o FORCE $(call if_changed,gate) $(obj)/built-in.o: $(obj)/gate-syms.o $(obj)/built-in.o: ld_flags += -R $(obj)/gate-syms.o GATECFLAGS_gate-syms.o = -r -$(obj)/gate-syms.o: $(src)/gate.lds.s $(obj)/gate.o FORCE +$(obj)/gate-syms.o: $(obj)/gate.lds $(obj)/gate.o FORCE $(call if_changed,gate) # gate-data.o contains the gate DSO image as data in section .data.gate.
arch/m68k/kernel/Makefile +1 -1
@@ -7,7 +7,7 @@ else extra-y := sun3-head.o endif -extra-y += vmlinux.lds.s +extra-y += vmlinux.lds obj-y := entry.o process.o traps.o ints.o signal.o ptrace.o \ sys_m68k.o time.o semaphore.o setup.o m68k_ksyms.o
arch/m68knommu/kernel/Makefile +1 -1
@@ -2,7 +2,7 @@ # Makefile for arch/m68knommu/kernel. # -extra-y := vmlinux.lds.s +extra-y := vmlinux.lds obj-y += dma.o entry.o init_task.o m68k_ksyms.o process.o ptrace.o semaphore.o \ setup.o signal.o syscalltable.o sys_m68k.o time.o traps.o
arch/mips/Makefile +1 -1
@@ -643,7 +643,7 @@ # none has been choosen above. # -AFLAGS_vmlinux.lds.o := \ +CPPFLAGS_vmlinux.lds := \ -D"LOADADDR=$(load-y)" \ -D"JIFFIES=$(JIFFIES)" \ -imacros $(srctree)/include/asm-$(ARCH)/sn/mapped_kernel.h
arch/mips/kernel/Makefile +1 -1
@@ -2,7 +2,7 @@ # Makefile for the Linux/MIPS kernel. # -extra-y := head.o init_task.o vmlinux.lds.s +extra-y := head.o init_task.o vmlinux.lds obj-y += cpu-probe.o branch.o entry.o genex.o irq.o process.o \ ptrace.o reset.o semaphore.o setup.o signal.o syscall.o \
arch/parisc/kernel/Makefile +1 -1
@@ -4,7 +4,7 @@ head-y := head.o head-$(CONFIG_PARISC64) := head64.o -extra-y := init_task.o $(head-y) vmlinux.lds.s +extra-y := init_task.o $(head-y) vmlinux.lds AFLAGS_entry.o := -traditional AFLAGS_pacache.o := -traditional
arch/ppc/Makefile +1 -1
@@ -73,7 +73,7 @@ all: zImage -AFLAGS_vmlinux.lds.o := -Upowerpc +CPPFLAGS_vmlinux.lds := -Upowerpc # All the instructions talk about "make bzImage". bzImage: zImage
arch/ppc/kernel/Makefile +1 -1
@@ -19,7 +19,7 @@ extra-$(CONFIG_8xx) := head_8xx.o extra-$(CONFIG_6xx) += idle_6xx.o extra-$(CONFIG_POWER4) += idle_power4.o -extra-y += vmlinux.lds.s +extra-y += vmlinux.lds obj-y := entry.o traps.o irq.o idle.o time.o misc.o \ process.o signal.o ptrace.o align.o \
arch/ppc64/kernel/Makefile +1 -1
@@ -3,7 +3,7 @@ # EXTRA_CFLAGS += -mno-minimal-toc -extra-y := head.o vmlinux.lds.s +extra-y := head.o vmlinux.lds obj-y := setup.o entry.o traps.o irq.o idle.o dma.o \ time.o process.o signal.o syscalls.o misc.o ptrace.o \
arch/s390/kernel/Makefile +1 -1
@@ -10,7 +10,7 @@ extra-$(CONFIG_ARCH_S390_31) += head.o extra-$(CONFIG_ARCH_S390X) += head64.o -extra-y += init_task.o vmlinux.lds.s +extra-y += init_task.o vmlinux.lds obj-$(CONFIG_MODULES) += s390_ksyms.o module.o obj-$(CONFIG_SMP) += smp.o
arch/sh/Makefile +1 -1
@@ -122,7 +122,7 @@ boot := arch/sh/boot -AFLAGS_vmlinux.lds.o := -traditional +CPPFLAGS_vmlinux.lds := -traditional prepare: target_links
arch/sh/boot/compressed/Makefile +1 -1
@@ -22,7 +22,7 @@ CONFIG_BOOT_LINK_OFFSET ?= 0x00800000 IMAGE_OFFSET := $(shell printf "0x%8x" $$[0x80000000+$(CONFIG_MEMORY_START)+$(CONFIG_BOOT_LINK_OFFSET)]) -LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup -T $(obj)/../../kernel/vmlinux.lds.s +LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup -T $(obj)/../../kernel/vmlinux.lds $(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o FORCE $(call if_changed,ld)
arch/sh/kernel/Makefile +1 -1
@@ -2,7 +2,7 @@ # Makefile for the Linux/SuperH kernel. # -extra-y := head.o init_task.o vmlinux.lds.s +extra-y := head.o init_task.o vmlinux.lds obj-y := process.o signal.o entry.o traps.o irq.o \ ptrace.o setup.o time.o sys_sh.o semaphore.o \
arch/sh64/boot/compressed/Makefile +3 -3
@@ -12,7 +12,7 @@ # targets := vmlinux vmlinux.bin vmlinux.bin.gz \ - head.o misc.o cache.o piggy.o vmlinux.lds.o + head.o misc.o cache.o piggy.o vmlinux.lds EXTRA_AFLAGS := -traditional
@@ -25,7 +25,7 @@ ZIMAGE_OFFSET = $(shell printf "0x%8x" $$[$(CONFIG_MEMORY_START)+0x400000+0x10000]) LDFLAGS_vmlinux := -Ttext $(ZIMAGE_OFFSET) -e startup \ - -T $(obj)/../../kernel/vmlinux.lds.s \ + -T $(obj)/../../kernel/vmlinux.lds \ --no-warn-mismatch $(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o FORCE
@@ -41,6 +41,6 @@ LDFLAGS_piggy.o := -r --format binary --oformat elf32-sh64-linux -T OBJCOPYFLAGS += -R .empty_zero_page -$(obj)/piggy.o: $(obj)/vmlinux.lds.s $(obj)/vmlinux.bin.gz FORCE +$(obj)/piggy.o: $(obj)/vmlinux.lds $(obj)/vmlinux.bin.gz FORCE $(call if_changed,ld)
arch/sparc/boot/Makefile +1 -1
@@ -37,7 +37,7 @@ BTOBJS := $(HEAD_Y) $(INIT_Y) BTLIBS := $(CORE_Y) $(LIBS_Y) $(DRIVERS_Y) $(NET_Y) -LDFLAGS_image := -T arch/sparc/kernel/vmlinux.lds.s $(BTOBJS) \ +LDFLAGS_image := -T arch/sparc/kernel/vmlinux.lds $(BTOBJS) \ --start-group $(BTLIBS) --end-group \ $(kallsyms.o) $(obj)/btfix.o
arch/sparc/kernel/Makefile +1 -1
@@ -2,7 +2,7 @@ # Makefile for the linux kernel. # -extra-y := head.o init_task.o vmlinux.lds.s +extra-y := head.o init_task.o vmlinux.lds EXTRA_AFLAGS := -ansi
arch/sparc64/Makefile +1 -1
@@ -10,7 +10,7 @@ CHECK := $(CHECK) -D__sparc__=1 -D__sparc_v9__=1 -AFLAGS_vmlinux.lds.o += -Usparc +CPPFLAGS_vmlinux.lds += -Usparc CC := $(shell if $(CC) -m64 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo $(CC); else echo sparc64-linux-gcc; fi )
arch/sparc64/kernel/Makefile +1 -1
@@ -5,7 +5,7 @@ EXTRA_AFLAGS := -ansi EXTRA_CFLAGS := -Werror -extra-y := head.o init_task.o vmlinux.lds.s +extra-y := head.o init_task.o vmlinux.lds obj-y := process.o setup.o cpu.o idprom.o \ traps.o devices.o auxio.o \
arch/um/Makefile +4 -4
@@ -77,7 +77,7 @@ # CONFIG_MODE_SKAS + CONFIG_STATIC_LINK case. LINK_TT = -static -LD_SCRIPT_TT := uml.lds.s +LD_SCRIPT_TT := uml.lds ifeq ($(CONFIG_STATIC_LINK),y) LINK-y += $(LINK_TT)
@@ -98,12 +98,12 @@ CONFIG_KERNEL_STACK_ORDER ?= 2 STACK_SIZE := $(shell echo $$[ 4096 * (1 << $(CONFIG_KERNEL_STACK_ORDER)) ] ) -AFLAGS_vmlinux.lds.o = -U$(SUBARCH) \ +CPPFLAGS_vmlinux.lds = -U$(SUBARCH) \ -DSTART=$$(($(TOP_ADDR) - $(SIZE))) -DELF_ARCH=$(ELF_ARCH) \ -DELF_FORMAT=\"$(ELF_FORMAT)\" $(CPP_MODE_TT) \ -DKERNEL_STACK_SIZE=$(STACK_SIZE) -AFLAGS_$(LD_SCRIPT-y:.s=).o = $(AFLAGS_vmlinux.lds.o) -P -C -Uum +CPPFLAGS_$(LD_SCRIPT-y) = $(CPPFLAGS_vmlinux.lds) -P -C -Uum LD_SCRIPT-y := $(ARCH_DIR)/$(LD_SCRIPT-y)
@@ -122,7 +122,7 @@ # To get a definition of F_SETSIG USER_CFLAGS += -D_GNU_SOURCE -CLEAN_FILES += linux x.i gmon.out $(ARCH_DIR)/uml.lds.s \ +CLEAN_FILES += linux x.i gmon.out $(ARCH_DIR)/uml.lds \ $(ARCH_DIR)/dyn_link.ld.s $(GEN_HEADERS) $(ARCH_DIR)/main.o: $(ARCH_DIR)/main.c
arch/um/Makefile-skas +1 -1
@@ -12,7 +12,7 @@ MODE_INCLUDE += -I$(TOPDIR)/$(ARCH_DIR)/kernel/skas/include LINK_SKAS = -Wl,-rpath,/lib -LD_SCRIPT_SKAS = dyn.lds.s +LD_SCRIPT_SKAS = dyn.lds GEN_HEADERS += $(ARCH_DIR)/kernel/skas/include/skas_ptregs.h
arch/um/kernel/Makefile +1 -1
@@ -3,7 +3,7 @@ # Licensed under the GPL # -extra-y := vmlinux.lds.s +extra-y := vmlinux.lds obj-y = checksum.o config.o exec_kern.o exitcode.o frame_kern.o frame.o \ helper.o init_task.o irq.o irq_user.o ksyms.o mem.o mem_user.o \
arch/v850/kernel/Makefile +1 -1
@@ -9,7 +9,7 @@ # for more details. # -extra-y := head.o init_task.o vmlinux.lds.s +extra-y := head.o init_task.o vmlinux.lds obj-y += intv.o entry.o process.o syscalls.o time.o semaphore.o setup.o \ signal.o irq.o mach.o ptrace.o bug.o
arch/x86_64/kernel/Makefile +1 -1
@@ -2,7 +2,7 @@ # Makefile for the linux kernel. # -extra-y := head.o head64.o init_task.o vmlinux.lds.s +extra-y := head.o head64.o init_task.o vmlinux.lds EXTRA_AFLAGS := -traditional obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \ ptrace.o i8259.o ioport.o ldt.o setup.o time.o sys_x86_64.o \
arch/x86_64/kernel/Makefile-HEAD +1 -1
@@ -2,7 +2,7 @@ # Makefile for the linux kernel. # -extra-y := head.o head64.o init_task.o vmlinux.lds.s +extra-y := head.o head64.o init_task.o vmlinux.lds EXTRA_AFLAGS := -traditional obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \ ptrace.o i8259.o ioport.o ldt.o setup.o time.o sys_x86_64.o \
kbuild: Allow external modules to use host.progs with no warning
In reply to Sam Ravnborg# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2004/08/15 21:54:22+02:00 [email protected]
# kbuild: Allow external modules to use host-progs with no warning
#
# Only warn if $(host-progs) and $(hostptogs-y) are not equal. # This allows external modules to use: # hostprogs-y := file ... # host-progs := $(hostprogs-y)
#
# This is backwards compatible and will not warn.
#
# Signed-off-by: Sam Ravnborg <[email protected]>
#
# scripts/Makefile.build
# 2004/08/15 21:54:06+02:00 [email protected] +2 -0 # Only warn if $(host-progs) and $(hostptogs-y) are not equal. # This allows external modules to use: # hostprogs-y := file ... # host-progs := $(hostprogs-y)
#
# This is backwards compatible and will not warn.
#
scripts/Makefile.build +2 -0
@@ -15,8 +15,10 @@ include scripts/Makefile.lib ifdef host-progs +ifneq ($(hostprogs-y),$(host-progs)) $(warning kbuild: $(obj)/Makefile - Usage of host-progs is deprecated. Please replace with hostprogs-y!) hostprogs-y += $(host-progs) +endif endif # Do not include host rules unles needed
kbuild: Delete unnessesary $(wildcard ...)
In reply to Sam Ravnborg# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2004/08/15 21:41:02+02:00 [email protected]
# kbuild: Remove wildcard on KBUILD_OUTPUT
#
# This patch removes unnecessary wildcard on KBUILD_OUTPUT
#
# Signed-off-by: Coywolf Qi Hunt <[email protected]>
# Signed-off-by: Sam Ravnborg <[email protected]>
#
# Makefile
# 2004/08/12 23:09:08+02:00 [email protected] +1 -1
# kbuild: Remove wildcard on KBUILD_OUTPUT
#
Makefile +1 -1
@@ -102,7 +102,7 @@ # check that the output directory actually exists saved-output := $(KBUILD_OUTPUT) KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd) -$(if $(wildcard $(KBUILD_OUTPUT)),, \ +$(if $(KBUILD_OUTPUT),, \ $(error output directory "$(saved-output)" does not exist)) .PHONY: $(MAKECMDGOALS)
kconfig: Kconfig.debug
In reply to Sam RavnborgQuoted 1 line · Sam Ravnborg
A number of kbuild updates and Randy's
Kconfig.debug
Randy already posted his patch so it will
not be included here.
Sam
Quoted 7 lines · Sam Ravnborg
A number of kbuild updates and Randy's
Kconfig.debugMost important stuff is:
o Get rid og bogus "has no CRC" when building external modules
o Rename *.lds.s to *.lds (*)
o Allow external modules to use host-progs
Quoted 8 lines
(*) The renaming of the *.lds file has been doen to allow the kernel to be build with for example Cygwin.
The major outstanding issue with Cygwin/Solaris are availability of certain .h files for the tools inscripts/*and spread in the tree. Tested patches that allows the tools to be build under Cygwin/Solaris are appreciated.Patches follows this mail.
Speaking of kbuild, is there any reasonable way to do check-only runs? Simple "set CC et.al. to scripts that will create target and do nothing else" doesn't work for obvious reasons - we have some stuff that really has to be compiled (e.g. empty.c + some arch-dependent files). Same goes for make -n C=1 | grep sparse | ... variants.
Another thing that would be very nice to have: analog of allmodconfig with some options pre-set. Trivial cases can be hanlded by patching Kconfig (basically, adding depends on BROKEN), but IWBN to have something like make allmodconfig PRESET=<file that looks like a subset of .config>...
Quoted 6 lines · On Sun, Aug 15, 2004 at 09:42:29PM +0100…
Speaking of kbuild, is there any reasonable way to do check-only runs? Simple "set CC et.al. to scripts that will create target and do nothing else" doesn't work for obvious reasons - we have some stuff that really has to be compiled (e.g.
empty.c+ some arch-dependent files). Same goes for make -n C=1 | grep sparse | ... variants.
Usage:
make C=2
===== scripts/Makefile.build 1.47 vs edited =====
scripts/Makefile.build +5 -0
@@ -85,6 +85,9 @@ ifneq ($(KBUILD_CHECKSRC),0) quiet_cmd_checksrc = CHECK $< cmd_checksrc = $(CHECK) $(c_flags) $< ; + ifeq ($(KBUILD_CHECKSRC),2) + cmd_force_checksrc = $(call cmd,checksrc) + endif endif
@@ -182,11 +185,13 @@ # Built-in and composite module parts %.o: %.c FORCE + $(cmd_force_checksrc) $(call if_changed_rule,cc_o_c) # Single-part modules are special since we need to mark them in $(MODVERDIR) $(single-used-m): %.o: %.c FORCE + $(cmd_force_checksrc) $(call if_changed_rule,cc_o_c) @{ echo $(@:.o=.ko); echo $@; } > $(MODVERDIR)/$(@F:.o=.mod)
That should do it?
I will push this if you are OK with it.
Quoted 5 lines
Another thing that would be very nice to have: analog of allmodconfig with some options pre-set. Trivial cases can be hanlded by patching
Kconfig(basically, adding depends on BROKEN), but IWBN to have something like make allmodconfig PRESET=<file that looks like a subset of .config>...
Agree. Discussed a long time ago if we should introduce preprocessed _defconfig files, but people told me there were too little in common.
IIRC it is possible just to add to a .config file, and then the last assignment will decide.
But I have not tested it since long time ago so I may be wrong.
Sam
Quoted 8 lines · Sam Ravnborg
$(single-used-m): %.o: %.c FORCE
scripts/Makefile.build +1
-0+ $(cmd_force_checksrc) $(call if_changed_rule,cc_o_c) @{ echo $(@:.o=.ko); echo $@; } > $(MODVERDIR)/$(@F:.o=.mod)That should do it?
I will push this if you are OK with it.
Uhh... It ends up running sparse *twice* and still runs gcc on every file.
Quoted 7 lines · On Mon, Aug 16, 2004 at 09:01:59PM +0100…
Quoted 6 lines · Sam Ravnborg
$(single-used-m): %.o: %.c FORCE
scripts/Makefile.build +1
-0+ $(cmd_force_checksrc) $(call if_changed_rule,cc_o_c) @{ echo $(@:.o=.ko); echo $@; } > $(MODVERDIR)/$(@F:.o=.mod)
Quoted 5 lines
Quoted 2 lines
That should do it?
I will push this if you are OK with it.Uhh... It ends up running sparse *twice* and still runs gcc on every file.
You are supposed to use: make C=2 only on a fully updated tree. Then you will see sparse only being run once, and gcc will not be run because the file is already updated.
That said it should not run sparse twice when a file needs to be updated. Will take another look at it.
PS. Please keep me in cc:.
Sam
Quoted 3 lines · Sam Ravnborg
Quoted 3 lines
Uhh... It ends up running sparse *twice* and still runs gcc on every file.
This one should be better.
On the sparse topic. Do you see anything against introducing CHECKFLAGS?
CHECKFLAGS would be assigned the sparse specific flags in arch/*/Makefile.
I see no reason to introduce EXTRA_CHECKFLAGS, CHECKFLAGS_$(F*) as known from CFLAGS, AFLAGS. But I like the split into CHECKFLAGS. That should allow me to do:
make CHECK=my_hacked_sparse C=2
Sam
===== scripts/Makefile.build 1.47 vs edited =====
scripts/Makefile.build +9 -2
@@ -83,8 +83,13 @@ # Linus' kernel sanity checking tool ifneq ($(KBUILD_CHECKSRC),0) -quiet_cmd_checksrc = CHECK $< - cmd_checksrc = $(CHECK) $(c_flags) $< ; + ifeq ($(KBUILD_CHECKSRC),2) + quiet_cmd_force_checksrc = CHECK $< + cmd_force_checksrc = $(CHECK) $(c_flags) $< ; + else + quiet_cmd_checksrc = CHECK $< + cmd_checksrc = $(CHECK) $(c_flags) $< ; + endif endif
@@ -182,11 +187,13 @@ # Built-in and composite module parts %.o: %.c FORCE + $(call cmd,force_checksrc) $(call if_changed_rule,cc_o_c) # Single-part modules are special since we need to mark them in $(MODVERDIR) $(single-used-m): %.o: %.c FORCE + $(call cmd,force_checksrc) $(call if_changed_rule,cc_o_c) @{ echo $(@:.o=.ko); echo $@; } > $(MODVERDIR)/$(@F:.o=.mod)
kbuild/ia64: Fix breakage in arch/ia64/kernel/Makefile
In reply to Sam RavnborgBrown paperbag time :-(
The *.lds changes that I added to ia64 introduced an error. Fix it so ia64 build againg.
Pushed to bk://linux-sam.bkbits.net/kbuild
Sam
# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2004/08/16 16:51:51+02:00 [email protected]
# kbuild/ia64: Fix breakage in arch/ia64/kernel/Makefile
#
# Signed-off-by: Sam Ravnborg <[email protected]>
#
# arch/ia64/kernel/Makefile
# 2004/08/16 16:51:35+02:00 [email protected] +1 -1
# Fix breakage
#
arch/ia64/kernel/Makefile +1 -1
@@ -21,7 +21,7 @@ # The gate DSO image is built using a special linker script. targets += gate.so gate-syms.o -extra-y := gate.so gate-syms.o gate.lds gate.o +extra-y += gate.so gate-syms.o gate.lds gate.o # fp_emulate() expects f2-f5,f16-f31 to contain the user-level state. CFLAGS_traps.o += -mfixed-range=f2-f5,f16-f31