* [PATCH v2 0/3] update of various kbuild flags to allow user settings
@ 2010-07-28 18:25 Sam Ravnborg
2010-07-28 18:27 ` [PATCH 1/3] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line Sam Ravnborg
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Sam Ravnborg @ 2010-07-28 18:25 UTC (permalink / raw)
To: Michal Marek, linux-kbuild, lkml, Denys Vlasenko
Cc: Benjamin Herrenschmidt, Chen Liqin, David Howells, Denys Vlasenko,
Geert Uytterhoeven, Haavard Skinnemoen, Hirokazu Takata,
Martin Schwidefsky, Mike Frysinger, Ralf Baechle, Tony Luck
Denys Vlasenko complained that he could not set
a moduel specific linker flags on the command line.
It turned out that the cause of this was kbuild
that assigned a value to a variables that
may be modified by the user.
So any user supplied value would overwrite
the kbuild assigned value.
Fix this so we use internal variables for kbuild
feering up the official variables for use by
the user.
Changes in v2:
Fix so we can now specify both module and built-in
options on command line.
Combine all *_MODULE changes in one patch.
Add a new patch for *_KERNEL changes.
Document the new variables in makefiles.txt
Document the variables that may be set on the command line
in kbuild.txt
The frv Makefile saw a bigger cleanup this time.
I suggest to merge it through kbuild.git because the
update is dependent on the first patch in this serie.
Sam
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line
2010-07-28 18:25 [PATCH v2 0/3] update of various kbuild flags to allow user settings Sam Ravnborg
@ 2010-07-28 18:27 ` Sam Ravnborg
2010-07-28 18:32 ` Mike Frysinger
2010-07-29 9:26 ` Haavard Skinnemoen
2010-07-28 18:28 ` [PATCH 2/3] kbuild: allow assignment to {A,C}FLAGS_KERNEL " Sam Ravnborg
` (3 subsequent siblings)
4 siblings, 2 replies; 9+ messages in thread
From: Sam Ravnborg @ 2010-07-28 18:27 UTC (permalink / raw)
To: Michal Marek, linux-kbuild, lkml, Denys Vlasenko
Cc: Benjamin Herrenschmidt, Chen Liqin, David Howells,
Geert Uytterhoeven, Haavard Skinnemoen, Hirokazu Takata,
Martin Schwidefsky, Mike Frysinger, Ralf Baechle, Tony Luck
>From 40d7c77aeafa6b17503ffdcf58fa01411972b0d1 Mon Sep 17 00:00:00 2001
From: Sam Ravnborg <sam@ravnborg.org>
Date: Wed, 28 Jul 2010 17:33:09 +0200
Subject: [PATCH 1/3] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line
It is now possible to assign options to AS, CC and LD
on the command line - which is only used when building modules.
{A,C,LD}FLAGS_MODULE was all used both in the top-level Makefile
in the arch makefiles, thus users had no way to specify
additional options to AS, CC, LD when building modules
without overriding the original value.
Introduce a new set of variables KBUILD_{A,C,LD}FLAGS_MODULE
that is used by arch specific files and free up
{A,C,LD}FLAGS_MODULE so they can be assigned on
the command line.
All arch Makefiles that used the old variables has been updated.
Note: Previously we had a MODFLAGS variable for both
AS and CC. But in favour of consistency this was dropped.
So in some cases arch Makefile has one assignmnet replaced by
two assignmnets.
Note2: MODFLAGS was not documented and is dropped
without any notice. I do not expect much/any breakage
from this.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Denys Vlasenko <vda.linux@googlemail.com>
Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
Cc: Mike Frysinger <vapier@gentoo.org>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Chen Liqin <liqin.chen@sunplusct.com>
---
Documentation/kbuild/kbuild.txt | 16 ++++++++++++++--
Documentation/kbuild/makefiles.txt | 18 +++++++++++++++---
Makefile | 13 ++++++++-----
arch/avr32/Makefile | 2 +-
arch/blackfin/Makefile | 4 ++--
arch/ia64/Makefile | 2 +-
arch/m32r/Makefile | 2 +-
arch/m68k/Makefile | 2 +-
arch/mips/Makefile | 6 ++++--
arch/powerpc/Makefile | 2 +-
arch/s390/Makefile | 3 ++-
arch/score/Makefile | 3 ++-
scripts/Makefile.build | 9 ++++++---
scripts/Makefile.modpost | 7 ++++---
14 files changed, 62 insertions(+), 27 deletions(-)
diff --git a/Documentation/kbuild/kbuild.txt b/Documentation/kbuild/kbuild.txt
index 634c625..d9c6554 100644
--- a/Documentation/kbuild/kbuild.txt
+++ b/Documentation/kbuild/kbuild.txt
@@ -22,11 +22,23 @@ building C files and assembler files.
KAFLAGS
--------------------------------------------------
-Additional options to the assembler.
+Additional options to the assembler (for built-in and modules).
+
+AFLAGS_MODULE
+--------------------------------------------------
+Addtional module specific options to use for $(AS).
KCFLAGS
--------------------------------------------------
-Additional options to the C compiler.
+Additional options to the C compiler (for built-in and modules).
+
+CFLAGS_MODULE
+--------------------------------------------------
+Addtional module specific options to use for $(CC).
+
+LDFLAGS_MODULE
+--------------------------------------------------
+Additional options used for $(LD) when linking modules.
KBUILD_VERBOSE
--------------------------------------------------
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index 71c602d..802341a 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -928,11 +928,23 @@ When kbuild executes, the following steps are followed (roughly):
$(CFLAGS_KERNEL) contains extra C compiler flags used to compile
resident kernel code.
- CFLAGS_MODULE $(CC) options specific for modules
+ KBUILD_AFLAGS_MODULE Options for $(AS) when building modules
- $(CFLAGS_MODULE) contains extra C compiler flags used to compile code
- for loadable kernel modules.
+ $(KBUILD_AFLAGS_MODULE) is used to add arch specific options that
+ are used for $(AS).
+ From commandline AFLAGS_MODULE shall be used (see kbuild.txt).
+ KBUILD_CFLAGS_MODULE Options for $(CC) when building modules
+
+ $(KBUILD_CFLAGS_MODULE) is used to add arch specific options that
+ are used for $(CC).
+ From commandline CFLAGS_MODULE shall be used (see kbuild.txt).
+
+ KBUILD_LDFLAGS_MODULE Options for $(LD) when linking modules
+
+ $(KBUILD_LDFLAGS_MODULE) is used to add arch specific options
+ used when linking modules. This is often a linker script.
+ From commandline LDFLAGS_MODULE shall be used (see kbuild.txt).
--- 6.2 Add prerequisites to archprepare:
diff --git a/Makefile b/Makefile
index a14c207..88447e7 100644
--- a/Makefile
+++ b/Makefile
@@ -332,10 +332,9 @@ CHECK = sparse
CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
-Wbitwise -Wno-return-void $(CF)
-MODFLAGS = -DMODULE
-CFLAGS_MODULE = $(MODFLAGS)
-AFLAGS_MODULE = $(MODFLAGS)
-LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.lds
+CFLAGS_MODULE =
+AFLAGS_MODULE =
+LDFLAGS_MODULE =
CFLAGS_KERNEL =
AFLAGS_KERNEL =
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage
@@ -355,6 +354,9 @@ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-Wno-format-security \
-fno-delete-null-pointer-checks
KBUILD_AFLAGS := -D__ASSEMBLY__
+KBUILD_AFLAGS_MODULE := -DMODULE
+KBUILD_CFLAGS_MODULE := -DMODULE
+KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
@@ -369,6 +371,7 @@ export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV
export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
+export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
# When compiling out-of-tree modules, put MODVERDIR in the module
# tree rather than in the kernel tree. The kernel tree might
@@ -607,7 +610,7 @@ endif
# Use --build-id when available.
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
$(call cc-ldoption, -Wl$(comma)--build-id,))
-LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID)
+KBUILD_LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID)
LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID)
ifeq ($(CONFIG_STRIP_ASM_SYMS),y)
diff --git a/arch/avr32/Makefile b/arch/avr32/Makefile
index ead8a75..22fb665 100644
--- a/arch/avr32/Makefile
+++ b/arch/avr32/Makefile
@@ -13,7 +13,7 @@ KBUILD_DEFCONFIG := atstk1002_defconfig
KBUILD_CFLAGS += -pipe -fno-builtin -mno-pic
KBUILD_AFLAGS += -mrelax -mno-pic
-CFLAGS_MODULE += -mno-relax
+KBUILD_CFLAGS_MODULE += -mno-relax
LDFLAGS_vmlinux += --relax
cpuflags-$(CONFIG_PLATFORM_AT32AP) += -march=ap
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile
index 5a97a31..9d5ffaf 100644
--- a/arch/blackfin/Makefile
+++ b/arch/blackfin/Makefile
@@ -18,8 +18,8 @@ ifeq ($(CONFIG_ROMKERNEL),y)
KBUILD_CFLAGS += -mlong-calls
endif
KBUILD_AFLAGS += $(call cc-option,-mno-fdpic)
-CFLAGS_MODULE += -mlong-calls
-LDFLAGS_MODULE += -m elf32bfin
+KBUILD_CFLAGS_MODULE += -mlong-calls
+KBUILD_LDFLAGS_MODULE += -m elf32bfin
KALLSYMS += --symbol-prefix=_
KBUILD_DEFCONFIG := BF537-STAMP_defconfig
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
index 8ae0d26..6a4807f 100644
--- a/arch/ia64/Makefile
+++ b/arch/ia64/Makefile
@@ -22,7 +22,7 @@ CHECKFLAGS += -m64 -D__ia64=1 -D__ia64__=1 -D_LP64 -D__LP64__
OBJCOPYFLAGS := --strip-all
LDFLAGS_vmlinux := -static
-LDFLAGS_MODULE += -T $(srctree)/arch/ia64/module.lds
+KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/ia64/module.lds
AFLAGS_KERNEL := -mconstant-gp
EXTRA :=
diff --git a/arch/m32r/Makefile b/arch/m32r/Makefile
index 469766b..14a3c23 100644
--- a/arch/m32r/Makefile
+++ b/arch/m32r/Makefile
@@ -13,7 +13,7 @@ LDFLAGS_vmlinux :=
KBUILD_CFLAGS += -pipe -fno-schedule-insns
CFLAGS_KERNEL += -mmodel=medium
-CFLAGS_MODULE += -mmodel=large
+KBUILD_CFLAGS_MODULE += -mmodel=large
ifdef CONFIG_CHIP_VDEC2
cflags-$(CONFIG_ISA_M32R2) += -DNO_FPU -Wa,-bitinst
diff --git a/arch/m68k/Makefile b/arch/m68k/Makefile
index 570d85c..b06a7e3 100644
--- a/arch/m68k/Makefile
+++ b/arch/m68k/Makefile
@@ -18,7 +18,7 @@ KBUILD_DEFCONFIG := multi_defconfig
# override top level makefile
AS += -m68020
LDFLAGS := -m m68kelf
-LDFLAGS_MODULE += -T $(srctree)/arch/m68k/kernel/module.lds
+KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/m68k/kernel/module.lds
ifneq ($(SUBARCH),$(ARCH))
ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := $(call cc-cross-prefix, \
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 0b9c01a..f7139b2 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -93,7 +93,8 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlinuz
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
cflags-y += -msoft-float
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
-MODFLAGS += -mlong-calls
+KBUILD_AFLAGS_MODULE += -mlong-calls
+KBUILD_CFLAGS_MODULE += -mlong-calls
cflags-y += -ffreestanding
@@ -185,7 +186,8 @@ cflags-$(CONFIG_CPU_DADDI_WORKAROUNDS) += $(call cc-option,-mno-daddi,)
ifdef CONFIG_CPU_SB1
ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
-MODFLAGS += -msb1-pass1-workarounds
+KBUILD_AFLAGS_MODULE += -msb1-pass1-workarounds
+KBUILD_CFLAGS_MODULE += -msb1-pass1-workarounds
endif
endif
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 77cfe7a..5d42f5e 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -94,7 +94,7 @@ else
endif
endif
-LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
+KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
ifeq ($(CONFIG_TUNE_CELL),y)
KBUILD_CFLAGS += $(call cc-option,-mtune=cell)
diff --git a/arch/s390/Makefile b/arch/s390/Makefile
index 30c5f01..0c9e6c6 100644
--- a/arch/s390/Makefile
+++ b/arch/s390/Makefile
@@ -24,7 +24,8 @@ CHECKFLAGS += -D__s390__ -msize-long
else
LD_BFD := elf64-s390
LDFLAGS := -m elf64_s390
-MODFLAGS += -fpic -D__PIC__
+KBUILD_AFLAGS_MODULE += -fpic -D__PIC__
+KBUILD_CFLAGS_MODULE += -fpic -D__PIC__
KBUILD_CFLAGS += -m64
KBUILD_AFLAGS += -m64
UTS_MACHINE := s390x
diff --git a/arch/score/Makefile b/arch/score/Makefile
index 68e0cd0..d77dc63 100644
--- a/arch/score/Makefile
+++ b/arch/score/Makefile
@@ -20,7 +20,8 @@ cflags-y += -G0 -pipe -mel -mnhwloop -D__SCOREEL__ \
#
KBUILD_AFLAGS += $(cflags-y)
KBUILD_CFLAGS += $(cflags-y)
-MODFLAGS += -mlong-calls
+KBUILD_AFLAGS_MODULE += -mlong-calls
+KBUILD_CFLAGS_MODULE += -mlong-calls
LDFLAGS += --oformat elf32-littlescore
LDFLAGS_vmlinux += -G0 -static -nostdlib
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 390aae4..5e7c40e 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -115,7 +115,10 @@ endif
# ---------------------------------------------------------------------------
# Default is built-in, unless we know otherwise
-modkern_cflags = $(if $(part-of-module), $(CFLAGS_MODULE), $(CFLAGS_KERNEL))
+modkern_cflags = \
+ $(if $(part-of-module), \
+ $(KBUILD_CFLAGS_MODULE) $(CFLAGS_MODULE), \
+ $(CFLAGS_KERNEL))
quiet_modtag := $(empty) $(empty)
$(real-objs-m) : part-of-module := y
@@ -250,8 +253,8 @@ $(obj)/%.lst: $(src)/%.c FORCE
modkern_aflags := $(AFLAGS_KERNEL)
-$(real-objs-m) : modkern_aflags := $(AFLAGS_MODULE)
-$(real-objs-m:.o=.s): modkern_aflags := $(AFLAGS_MODULE)
+$(real-objs-m) : modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
+$(real-objs-m:.o=.s): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
quiet_cmd_as_s_S = CPP $(quiet_modtag) $@
cmd_as_s_S = $(CPP) $(a_flags) -o $@ $<
diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
index 8f14c81..3e3f024 100644
--- a/scripts/Makefile.modpost
+++ b/scripts/Makefile.modpost
@@ -107,7 +107,7 @@ $(modules:.ko=.mod.c): __modpost ;
modname = $(notdir $(@:.mod.o=))
quiet_cmd_cc_o_c = CC $@
- cmd_cc_o_c = $(CC) $(c_flags) $(CFLAGS_MODULE) \
+ cmd_cc_o_c = $(CC) $(c_flags) $(KBUILD_CFLAGS_MODULE) $(CFLAGS_MODULE) \
-c -o $@ $<
$(modules:.ko=.mod.o): %.mod.o: %.mod.c FORCE
@@ -117,8 +117,9 @@ targets += $(modules:.ko=.mod.o)
# Step 6), final link of the modules
quiet_cmd_ld_ko_o = LD [M] $@
- cmd_ld_ko_o = $(LD) -r $(LDFLAGS) $(LDFLAGS_MODULE) -o $@ \
- $(filter-out FORCE,$^)
+ cmd_ld_ko_o = $(LD) -r $(LDFLAGS) \
+ $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE) \
+ -o $@ $(filter-out FORCE,$^)
$(modules): %.ko :%.o %.mod.o FORCE
$(call if_changed,ld_ko_o)
--
1.6.0.6
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] kbuild: allow assignment to {A,C}FLAGS_KERNEL on the command line
2010-07-28 18:25 [PATCH v2 0/3] update of various kbuild flags to allow user settings Sam Ravnborg
2010-07-28 18:27 ` [PATCH 1/3] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line Sam Ravnborg
@ 2010-07-28 18:28 ` Sam Ravnborg
2010-07-28 18:28 ` [PATCH 3/3] frv: clean up arch/frv/Makefile Sam Ravnborg
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Sam Ravnborg @ 2010-07-28 18:28 UTC (permalink / raw)
To: Michal Marek, linux-kbuild, lkml, Denys Vlasenko
Cc: Benjamin Herrenschmidt, Chen Liqin, David Howells,
Geert Uytterhoeven, Haavard Skinnemoen, Hirokazu Takata,
Martin Schwidefsky, Mike Frysinger, Ralf Baechle, Tony Luck
>From 4236ab8d726868df7a28132023e6b31e1d82e5b3 Mon Sep 17 00:00:00 2001
From: Sam Ravnborg <sam@ravnborg.org>
Date: Wed, 28 Jul 2010 19:11:27 +0200
Subject: [PATCH 2/3] kbuild: allow assignment to {A,C}FLAGS_KERNEL on the command line
It is now possible to assign options to AS and CC
on the command line - which is only used for built-in code.
{A,C}FLAGS_KERNEL was used both in the top-level Makefile
in the arch makefiles, thus users had no way to specify
additional options to AS, CC without overriding
the original value.
Introduce a new set of variables KBUILD_{A,C}FLAGS_KERNEL
that is used by arch specific files and free up
{A,C}FLAGS_KERNEL so they can be assigned on
the command line.
All arch Makefiles that used the old variables has been updated.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Hirokazu Takata <takata@linux-m32r.org>
---
Documentation/kbuild/kbuild.txt | 10 ++++++++++
Documentation/kbuild/makefiles.txt | 9 +++++++--
Makefile | 4 ++++
arch/ia64/Makefile | 4 ++--
arch/m32r/Makefile | 2 +-
scripts/Makefile.build | 4 ++--
6 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/Documentation/kbuild/kbuild.txt b/Documentation/kbuild/kbuild.txt
index d9c6554..e903f20 100644
--- a/Documentation/kbuild/kbuild.txt
+++ b/Documentation/kbuild/kbuild.txt
@@ -28,10 +28,20 @@ AFLAGS_MODULE
--------------------------------------------------
Addtional module specific options to use for $(AS).
+AFLAGS_KERNEL
+--------------------------------------------------
+Addtional options for $(AS) when used for assembler
+code for code that is compiled as built-in.
+
KCFLAGS
--------------------------------------------------
Additional options to the C compiler (for built-in and modules).
+CFLAGS_KERNEL
+--------------------------------------------------
+Addtional options for $(CC) when used to compile
+code that is compiled as built-in.
+
CFLAGS_MODULE
--------------------------------------------------
Addtional module specific options to use for $(CC).
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index 802341a..5c878cc 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -923,9 +923,9 @@ When kbuild executes, the following steps are followed (roughly):
The first example utilises the trick that a config option expands
to 'y' when selected.
- CFLAGS_KERNEL $(CC) options specific for built-in
+ KBUILD_AFLAGS_KERNEL $(AS) options specific for built-in
- $(CFLAGS_KERNEL) contains extra C compiler flags used to compile
+ $(KBUILD_AFLAGS_KERNEL) contains extra C compiler flags used to compile
resident kernel code.
KBUILD_AFLAGS_MODULE Options for $(AS) when building modules
@@ -934,6 +934,11 @@ When kbuild executes, the following steps are followed (roughly):
are used for $(AS).
From commandline AFLAGS_MODULE shall be used (see kbuild.txt).
+ KBUILD_CFLAGS_KERNEL $(CC) options specific for built-in
+
+ $(KBUILD_CFLAGS_KERNEL) contains extra C compiler flags used to compile
+ resident kernel code.
+
KBUILD_CFLAGS_MODULE Options for $(CC) when building modules
$(KBUILD_CFLAGS_MODULE) is used to add arch specific options that
diff --git a/Makefile b/Makefile
index 88447e7..2fb144e 100644
--- a/Makefile
+++ b/Makefile
@@ -353,6 +353,8 @@ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-Werror-implicit-function-declaration \
-Wno-format-security \
-fno-delete-null-pointer-checks
+KBUILD_AFLAGS_KERNEL :=
+KBUILD_CFLAGS_KERNEL :=
KBUILD_AFLAGS := -D__ASSEMBLY__
KBUILD_AFLAGS_MODULE := -DMODULE
KBUILD_CFLAGS_MODULE := -DMODULE
@@ -372,6 +374,7 @@ export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV
export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
+export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
# When compiling out-of-tree modules, put MODVERDIR in the module
# tree rather than in the kernel tree. The kernel tree might
@@ -1483,6 +1486,7 @@ cmd_crmodverdir = $(Q)mkdir -p $(MODVERDIR) \
$(if $(KBUILD_MODULES),; rm -f $(MODVERDIR)/*)
a_flags = -Wp,-MD,$(depfile) $(KBUILD_AFLAGS) $(AFLAGS_KERNEL) \
+ $(KBUILD_AFLAGS_KERNEL) \
$(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(KBUILD_CPPFLAGS) \
$(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(basetarget).o)
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
index 6a4807f..be7bfa1 100644
--- a/arch/ia64/Makefile
+++ b/arch/ia64/Makefile
@@ -23,12 +23,12 @@ CHECKFLAGS += -m64 -D__ia64=1 -D__ia64__=1 -D_LP64 -D__LP64__
OBJCOPYFLAGS := --strip-all
LDFLAGS_vmlinux := -static
KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/ia64/module.lds
-AFLAGS_KERNEL := -mconstant-gp
+KBUILD_AFLAGS_KERNEL := -mconstant-gp
EXTRA :=
cflags-y := -pipe $(EXTRA) -ffixed-r13 -mfixed-range=f12-f15,f32-f127 \
-falign-functions=32 -frename-registers -fno-optimize-sibling-calls
-CFLAGS_KERNEL := -mconstant-gp
+KBUILD_CFLAGS_KERNEL := -mconstant-gp
GAS_STATUS = $(shell $(srctree)/arch/ia64/scripts/check-gas "$(CC)" "$(OBJDUMP)")
KBUILD_CPPFLAGS += $(shell $(srctree)/arch/ia64/scripts/toolchain-flags "$(CC)" "$(OBJDUMP)" "$(READELF)")
diff --git a/arch/m32r/Makefile b/arch/m32r/Makefile
index 14a3c23..8ff5ba0 100644
--- a/arch/m32r/Makefile
+++ b/arch/m32r/Makefile
@@ -12,7 +12,7 @@ OBJCOPYFLAGS := -O binary -R .note -R .comment -S
LDFLAGS_vmlinux :=
KBUILD_CFLAGS += -pipe -fno-schedule-insns
-CFLAGS_KERNEL += -mmodel=medium
+KBUILD_CFLAGS_KERNEL += -mmodel=medium
KBUILD_CFLAGS_MODULE += -mmodel=large
ifdef CONFIG_CHIP_VDEC2
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 5e7c40e..a1a5cf9 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -118,7 +118,7 @@ endif
modkern_cflags = \
$(if $(part-of-module), \
$(KBUILD_CFLAGS_MODULE) $(CFLAGS_MODULE), \
- $(CFLAGS_KERNEL))
+ $(KBUILD_CFLAGS_KERNEL) $(CFLAGS_KERNEL))
quiet_modtag := $(empty) $(empty)
$(real-objs-m) : part-of-module := y
@@ -251,7 +251,7 @@ $(obj)/%.lst: $(src)/%.c FORCE
# Compile assembler sources (.S)
# ---------------------------------------------------------------------------
-modkern_aflags := $(AFLAGS_KERNEL)
+modkern_aflags := $(KBUILD_AFLAGS_KERNEL) $(AFLAGS_KERNEL)
$(real-objs-m) : modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
$(real-objs-m:.o=.s): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
--
1.6.0.6
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] frv: clean up arch/frv/Makefile
2010-07-28 18:25 [PATCH v2 0/3] update of various kbuild flags to allow user settings Sam Ravnborg
2010-07-28 18:27 ` [PATCH 1/3] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line Sam Ravnborg
2010-07-28 18:28 ` [PATCH 2/3] kbuild: allow assignment to {A,C}FLAGS_KERNEL " Sam Ravnborg
@ 2010-07-28 18:28 ` Sam Ravnborg
2010-07-28 18:30 ` [PATCH v2 0/3] update of various kbuild flags to allow user settings Sam Ravnborg
2010-07-29 9:00 ` Michal Marek
4 siblings, 0 replies; 9+ messages in thread
From: Sam Ravnborg @ 2010-07-28 18:28 UTC (permalink / raw)
To: Michal Marek, linux-kbuild, lkml, Denys Vlasenko; +Cc: David Howells
>From 2193dfaff6e2260a3ac1d2f578616640d601db55 Mon Sep 17 00:00:00 2001
From: Sam Ravnborg <sam@ravnborg.org>
Date: Wed, 28 Jul 2010 19:33:00 +0200
Subject: [PATCH 3/3] frv: clean up arch/frv/Makefile
- removed a lot of unused variable assignmnets
- removed unused bootstrap target
- replaced ARCHMODFLAGS with proper KBUILD_{A,C}FLAGS_MODULE assignmnets
The resuting Makefile has not been tested due to lack of toolchain,
but these were all trivial changes.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: David Howells <dhowells@redhat.com>
---
arch/frv/Makefile | 22 ++--------------------
1 files changed, 2 insertions(+), 20 deletions(-)
diff --git a/arch/frv/Makefile b/arch/frv/Makefile
index 310c47a..7ff8457 100644
--- a/arch/frv/Makefile
+++ b/arch/frv/Makefile
@@ -23,20 +23,14 @@
# Copyright (C) 1994 by Hamish Macdonald
#
-CCSPECS := $(shell $(CC) -v 2>&1 | grep "^Reading specs from " | head -1 | cut -c20-)
-CCDIR := $(strip $(patsubst %/specs,%,$(CCSPECS)))
-CPUCLASS := fr400
-
-# test for cross compiling
-COMPILE_ARCH = $(shell uname -m)
-
ifdef CONFIG_MMU
UTS_SYSNAME = -DUTS_SYSNAME=\"Linux\"
else
UTS_SYSNAME = -DUTS_SYSNAME=\"uClinux\"
endif
-ARCHMODFLAGS += -G0 -mlong-calls
+KBUILD_AFLAGS_MODULE += -G0 -mlong-calls
+KBUILD_CFLAGS_MODULE += -G0 -mlong-calls
ifdef CONFIG_GPREL_DATA_8
KBUILD_CFLAGS += -G8
@@ -54,7 +48,6 @@ endif
ifdef CONFIG_GC_SECTIONS
KBUILD_CFLAGS += -ffunction-sections -fdata-sections
-LINKFLAGS += --gc-sections
endif
ifndef CONFIG_FRAME_POINTER
@@ -64,16 +57,13 @@ endif
ifdef CONFIG_CPU_FR451_COMPILE
KBUILD_CFLAGS += -mcpu=fr450
KBUILD_AFLAGS += -mcpu=fr450
-ASFLAGS += -mcpu=fr450
else
ifdef CONFIG_CPU_FR551_COMPILE
KBUILD_CFLAGS += -mcpu=fr550
KBUILD_AFLAGS += -mcpu=fr550
-ASFLAGS += -mcpu=fr550
else
KBUILD_CFLAGS += -mcpu=fr400
KBUILD_AFLAGS += -mcpu=fr400
-ASFLAGS += -mcpu=fr400
endif
endif
@@ -83,14 +73,12 @@ endif
KBUILD_CFLAGS += -mno-fdpic -mgpr-32 -msoft-float -mno-media
KBUILD_CFLAGS += -ffixed-fcc3 -ffixed-cc3 -ffixed-gr15 -ffixed-icc2
KBUILD_AFLAGS += -mno-fdpic
-ASFLAGS += -mno-fdpic
# make sure the .S files get compiled with debug info
# and disable optimisations that are unhelpful whilst debugging
ifdef CONFIG_DEBUG_INFO
#KBUILD_CFLAGS += -O1
KBUILD_AFLAGS += -Wa,--gdwarf2
-ASFLAGS += -Wa,--gdwarf2
endif
head-y := arch/frv/kernel/head.o arch/frv/kernel/init_task.o
@@ -105,11 +93,5 @@ all: Image
Image: vmlinux
$(Q)$(MAKE) $(build)=arch/frv/boot $@
-bootstrap:
- $(Q)$(MAKEBOOT) bootstrap
-
archclean:
$(Q)$(MAKE) $(clean)=arch/frv/boot
-
-archdep: scripts/mkdep symlinks
- $(Q)$(MAKE) $(build)=arch/frv/boot dep
--
1.6.0.6
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/3] update of various kbuild flags to allow user settings
2010-07-28 18:25 [PATCH v2 0/3] update of various kbuild flags to allow user settings Sam Ravnborg
` (2 preceding siblings ...)
2010-07-28 18:28 ` [PATCH 3/3] frv: clean up arch/frv/Makefile Sam Ravnborg
@ 2010-07-28 18:30 ` Sam Ravnborg
2010-07-29 9:00 ` Michal Marek
4 siblings, 0 replies; 9+ messages in thread
From: Sam Ravnborg @ 2010-07-28 18:30 UTC (permalink / raw)
To: Michal Marek, linux-kbuild, lkml, Denys Vlasenko
Cc: Benjamin Herrenschmidt, Chen Liqin, David Howells,
Geert Uytterhoeven, Haavard Skinnemoen, Hirokazu Takata,
Martin Schwidefsky, Mike Frysinger, Ralf Baechle, Tony Luck
On Wed, Jul 28, 2010 at 08:25:23PM +0200, Sam Ravnborg wrote:
> Denys Vlasenko complained that he could not set
> a moduel specific linker flags on the command line.
>
> It turned out that the cause of this was kbuild
> that assigned a value to a variables that
> may be modified by the user.
> So any user supplied value would overwrite
> the kbuild assigned value.
>
> Fix this so we use internal variables for kbuild
> feering up the official variables for use by
> the user.
>
> Changes in v2:
> Fix so we can now specify both module and built-in
> options on command line.
> Combine all *_MODULE changes in one patch.
> Add a new patch for *_KERNEL changes.
> Document the new variables in makefiles.txt
> Document the variables that may be set on the command line
> in kbuild.txt
>
> The frv Makefile saw a bigger cleanup this time.
> I suggest to merge it through kbuild.git because the
> update is dependent on the first patch in this serie.
Forgot the stats:
Sam Ravnborg (3):
kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line
kbuild: allow assignment to {A,C}FLAGS_KERNEL on the command line
frv: clean up arch/frv/Makefile
Documentation/kbuild/kbuild.txt | 26 ++++++++++++++++++++++++--
Documentation/kbuild/makefiles.txt | 27 ++++++++++++++++++++++-----
Makefile | 17 ++++++++++++-----
arch/avr32/Makefile | 2 +-
arch/blackfin/Makefile | 4 ++--
arch/frv/Makefile | 22 ++--------------------
arch/ia64/Makefile | 6 +++---
arch/m32r/Makefile | 4 ++--
arch/m68k/Makefile | 2 +-
arch/mips/Makefile | 6 ++++--
arch/powerpc/Makefile | 2 +-
arch/s390/Makefile | 3 ++-
arch/score/Makefile | 3 ++-
scripts/Makefile.build | 11 +++++++----
scripts/Makefile.modpost | 7 ++++---
15 files changed, 89 insertions(+), 53 deletions(-)
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line
2010-07-28 18:27 ` [PATCH 1/3] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line Sam Ravnborg
@ 2010-07-28 18:32 ` Mike Frysinger
2010-07-29 9:26 ` Haavard Skinnemoen
1 sibling, 0 replies; 9+ messages in thread
From: Mike Frysinger @ 2010-07-28 18:32 UTC (permalink / raw)
To: Sam Ravnborg
Cc: Michal Marek, linux-kbuild, lkml, Denys Vlasenko,
Benjamin Herrenschmidt, Chen Liqin, David Howells,
Geert Uytterhoeven, Haavard Skinnemoen, Hirokazu Takata,
Martin Schwidefsky, Ralf Baechle, Tony Luck
On Wed, Jul 28, 2010 at 14:27, Sam Ravnborg wrote:
> --- a/arch/blackfin/Makefile
> +++ b/arch/blackfin/Makefile
> -CFLAGS_MODULE += -mlong-calls
> -LDFLAGS_MODULE += -m elf32bfin
> +KBUILD_CFLAGS_MODULE += -mlong-calls
> +KBUILD_LDFLAGS_MODULE += -m elf32bfin
Acked-by: Mike Frysinger <vapier@gentoo.org>
-mike
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/3] update of various kbuild flags to allow user settings
2010-07-28 18:25 [PATCH v2 0/3] update of various kbuild flags to allow user settings Sam Ravnborg
` (3 preceding siblings ...)
2010-07-28 18:30 ` [PATCH v2 0/3] update of various kbuild flags to allow user settings Sam Ravnborg
@ 2010-07-29 9:00 ` Michal Marek
2010-08-03 12:27 ` Michal Marek
4 siblings, 1 reply; 9+ messages in thread
From: Michal Marek @ 2010-07-29 9:00 UTC (permalink / raw)
To: Sam Ravnborg
Cc: linux-kbuild, lkml, Denys Vlasenko, Benjamin Herrenschmidt,
Chen Liqin, David Howells, Geert Uytterhoeven, Haavard Skinnemoen,
Hirokazu Takata, Martin Schwidefsky, Mike Frysinger, Ralf Baechle,
Tony Luck
On 28.7.2010 20:25, Sam Ravnborg wrote:
> Denys Vlasenko complained that he could not set
> a moduel specific linker flags on the command line.
>
> It turned out that the cause of this was kbuild
> that assigned a value to a variables that
> may be modified by the user.
> So any user supplied value would overwrite
> the kbuild assigned value.
>
> Fix this so we use internal variables for kbuild
> feering up the official variables for use by
> the user.
Acked-by: Michal Marek <mmarek@suse.cz>
but I'll wait a while before applying it so that the arch maintainers
can object to / ack the arch-specific changes.
Michal
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line
2010-07-28 18:27 ` [PATCH 1/3] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line Sam Ravnborg
2010-07-28 18:32 ` Mike Frysinger
@ 2010-07-29 9:26 ` Haavard Skinnemoen
1 sibling, 0 replies; 9+ messages in thread
From: Haavard Skinnemoen @ 2010-07-29 9:26 UTC (permalink / raw)
To: Sam Ravnborg
Cc: Michal Marek, linux-kbuild, lkml, Denys Vlasenko,
Benjamin Herrenschmidt, Chen Liqin, David Howells,
Geert Uytterhoeven, Haavard Skinnemoen, Hirokazu Takata,
Martin Schwidefsky, Mike Frysinger, Ralf Baechle, Tony Luck
Sam Ravnborg <sam@ravnborg.org> wrote:
> diff --git a/arch/avr32/Makefile b/arch/avr32/Makefile
> index ead8a75..22fb665 100644
> --- a/arch/avr32/Makefile
> +++ b/arch/avr32/Makefile
> @@ -13,7 +13,7 @@ KBUILD_DEFCONFIG := atstk1002_defconfig
>
> KBUILD_CFLAGS += -pipe -fno-builtin -mno-pic
> KBUILD_AFLAGS += -mrelax -mno-pic
> -CFLAGS_MODULE += -mno-relax
> +KBUILD_CFLAGS_MODULE += -mno-relax
> LDFLAGS_vmlinux += --relax
>
> cpuflags-$(CONFIG_PLATFORM_AT32AP) += -march=ap
Acked-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/3] update of various kbuild flags to allow user settings
2010-07-29 9:00 ` Michal Marek
@ 2010-08-03 12:27 ` Michal Marek
0 siblings, 0 replies; 9+ messages in thread
From: Michal Marek @ 2010-08-03 12:27 UTC (permalink / raw)
To: Sam Ravnborg
Cc: linux-kbuild, lkml, Denys Vlasenko, Benjamin Herrenschmidt,
Chen Liqin, David Howells, Geert Uytterhoeven, Haavard Skinnemoen,
Hirokazu Takata, Martin Schwidefsky, Mike Frysinger, Ralf Baechle,
Tony Luck
On 29.7.2010 11:00, Michal Marek wrote:
> On 28.7.2010 20:25, Sam Ravnborg wrote:
>> Denys Vlasenko complained that he could not set
>> a moduel specific linker flags on the command line.
>>
>> It turned out that the cause of this was kbuild
>> that assigned a value to a variables that
>> may be modified by the user.
>> So any user supplied value would overwrite
>> the kbuild assigned value.
>>
>> Fix this so we use internal variables for kbuild
>> feering up the official variables for use by
>> the user.
>
> Acked-by: Michal Marek <mmarek@suse.cz>
>
> but I'll wait a while before applying it so that the arch maintainers
> can object to / ack the arch-specific changes.
Applied. I'll be sending a pull request to Linus on Wednesday.
Michal
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2010-08-03 12:29 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-28 18:25 [PATCH v2 0/3] update of various kbuild flags to allow user settings Sam Ravnborg
2010-07-28 18:27 ` [PATCH 1/3] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line Sam Ravnborg
2010-07-28 18:32 ` Mike Frysinger
2010-07-29 9:26 ` Haavard Skinnemoen
2010-07-28 18:28 ` [PATCH 2/3] kbuild: allow assignment to {A,C}FLAGS_KERNEL " Sam Ravnborg
2010-07-28 18:28 ` [PATCH 3/3] frv: clean up arch/frv/Makefile Sam Ravnborg
2010-07-28 18:30 ` [PATCH v2 0/3] update of various kbuild flags to allow user settings Sam Ravnborg
2010-07-29 9:00 ` Michal Marek
2010-08-03 12:27 ` Michal Marek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox