public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [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