Skip to contentSkip to conversation

package/Makefile.in: remove BR2_TARGET_OPTIMIZATION from TARGET_CFLAGS

PATCH New Arnout Vandecappelle (Essensium/Mind) 3 participants 4 messages Oct 14, 2015 – Oct 29, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/Makefile.in: remove BR2_TARGET_OPTIMIZATION from TARGET_CFLAGS

Since the toolchain is always wrapped and the wrapper already passes BR2_TARGET_OPTIMIZATION (through BR_ADDITIONAL_CFLAGS), there is no longer any need to pass it in TARGET_CFLAGS as well.

---
Tested with BR2_DEBUG_WRAPPER that BR2_TARGET_OPTIMIZATION and BR2_OPTIMIZE_* are still called correctly.

---
 package/Makefile.in | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)
package/Makefile.in +5 -7
index 8a592d4..ca34660 100644
@@ -110,22 +110,20 @@ endif
 STAGING_SUBDIR = usr/$(GNU_TARGET_NAME)/sysroot
 STAGING_DIR    = $(HOST_DIR)/$(STAGING_SUBDIR)
 
-TARGET_OPTIMIZATION := $(call qstrip,$(BR2_TARGET_OPTIMIZATION))
-
 ifeq ($(BR2_OPTIMIZE_0),y)
-TARGET_OPTIMIZATION += -O0
+TARGET_OPTIMIZATION = -O0
 endif
 ifeq ($(BR2_OPTIMIZE_1),y)
-TARGET_OPTIMIZATION += -O1
+TARGET_OPTIMIZATION = -O1
 endif
 ifeq ($(BR2_OPTIMIZE_2),y)
-TARGET_OPTIMIZATION += -O2
+TARGET_OPTIMIZATION = -O2
 endif
 ifeq ($(BR2_OPTIMIZE_3),y)
-TARGET_OPTIMIZATION += -O3
+TARGET_OPTIMIZATION = -O3
 endif
 ifeq ($(BR2_OPTIMIZE_S),y)
-TARGET_OPTIMIZATION += -Os
+TARGET_OPTIMIZATION = -Os
 endif
 ifeq ($(BR2_DEBUG_1),y)
 TARGET_DEBUGGING = -g1
Signature · 1 line
2.6.1
#1 lore raw

PATCH 1/1 package/Makefile.in: remove BR2_TARGET_OPTIMIZATION from TARGET_CFLAGS

Arnout, All,

On 2015-10-15 00:19 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:

Quoted 5 lines

Since the toolchain is always wrapped and the wrapper already passes BR2_TARGET_OPTIMIZATION (through BR_ADDITIONAL_CFLAGS), there is no longer any need to pass it in TARGET_CFLAGS as well.

On principle:

However, I noticed a potential bug in the toolchain-wrapper makefile. Here's how we currently define BR_ADDITIONAL_CFLAGS:

    -DBR_ADDITIONAL_CFLAGS='$(foreach f,$(call qstrip,$(BR2_TARGET_OPTIMIZATION)),"$(f)",)'

Notice the last comma in there? We want to have that comma in the resulting expansion, so that we transform the option string:

-mfoo -mbar -buz

into:

    "-mfoo", "-mbar", "-mbuz",

so that it can be used ina C array definition:

    static char *predef_args[] = {
    [...]
    #ifdef BR_ADDITIONAL_CFLAGS
        BR_ADDITIONAL_CFLAGS
    #endif
    }

However, in Makefile function calls, the comma is used to separate the arguments passed to the function.

Even though $(foreach ...) only accepts three arguments, and the last comma in fact correctly ends up in the expanded string, it would be much safer to use $(comma) instead, like we would have to do in a call to any other function.

Regards,
Yann E. MORIN.

Quoted 46 lines

---
Tested with BR2_DEBUG_WRAPPER that BR2_TARGET_OPTIMIZATION and BR2_OPTIMIZE_* are still called correctly.

---
 package/Makefile.in | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)
package/Makefile.in +5 -7
index 8a592d4..ca34660 100644
@@ -110,22 +110,20 @@ endif
 STAGING_SUBDIR = usr/$(GNU_TARGET_NAME)/sysroot
 STAGING_DIR    = $(HOST_DIR)/$(STAGING_SUBDIR)
 
-TARGET_OPTIMIZATION := $(call qstrip,$(BR2_TARGET_OPTIMIZATION))
-
 ifeq ($(BR2_OPTIMIZE_0),y)
-TARGET_OPTIMIZATION += -O0
+TARGET_OPTIMIZATION = -O0
 endif
 ifeq ($(BR2_OPTIMIZE_1),y)
-TARGET_OPTIMIZATION += -O1
+TARGET_OPTIMIZATION = -O1
 endif
 ifeq ($(BR2_OPTIMIZE_2),y)
-TARGET_OPTIMIZATION += -O2
+TARGET_OPTIMIZATION = -O2
 endif
 ifeq ($(BR2_OPTIMIZE_3),y)
-TARGET_OPTIMIZATION += -O3
+TARGET_OPTIMIZATION = -O3
 endif
 ifeq ($(BR2_OPTIMIZE_S),y)
-TARGET_OPTIMIZATION += -Os
+TARGET_OPTIMIZATION = -Os
 endif
 ifeq ($(BR2_DEBUG_1),y)
 TARGET_DEBUGGING = -g1
Signature · 6 lines
2.6.1

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#2 lore raw

PATCH 1/1 package/Makefile.in: remove BR2_TARGET_OPTIMIZATION from TARGET_CFLAGS

On 21-10-15 20:28, Yann E. MORIN wrote:
[snip]

Quoted 23 lines

However, I noticed a potential bug in the toolchain-wrapper makefile. Here's how we currently define BR_ADDITIONAL_CFLAGS:

    -DBR_ADDITIONAL_CFLAGS='$(foreach f,$(call qstrip,$(BR2_TARGET_OPTIMIZATION)),"$(f)",)'

Notice the last comma in there? We want to have that comma in the resulting expansion, so that we transform the option string:

-mfoo -mbar -buz

into:

    "-mfoo", "-mbar", "-mbuz",

so that it can be used ina C array definition:

    static char *predef_args[] = {
    [...]
    #ifdef BR_ADDITIONAL_CFLAGS
        BR_ADDITIONAL_CFLAGS
    #endif
    }
Quoted 7 lines

However, in Makefile function calls, the comma is used to separate the arguments passed to the function.

Even though $(foreach ...) only accepts three arguments, and the last comma in fact correctly ends up in the expanded string, it would be much safer to use $(comma) instead, like we would have to do in a call to any other function.

Sure thing. Care to cook a patch?

Regards,
Arnout

[snip]

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#3 lore raw

PATCH 1/1 package/Makefile.in: remove BR2_TARGET_OPTIMIZATION from TARGET_CFLAGS

In reply to Arnout Vandecappelle (Essensium/Mind)
Quoted 7 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Arnout" == Arnout Vandecappelle (Essensium/Mind) <[email protected]> writes:

Since the toolchain is always wrapped and the wrapper already passes BR2_TARGET_OPTIMIZATION (through BR_ADDITIONAL_CFLAGS), there is no longer any need to pass it in TARGET_CFLAGS as well.

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard