mirror of
https://github.com/apache/nuttx.git
synced 2026-06-04 23:03:27 +08:00
make/expression: improving up asm/C/C++ compile times
In the current compilation environment, the recursive assignment(=) for compile
flags will be delayed until every file is actually need to be compile.
For example:
--------------------------------------------------------------------------------
arch/arm/src/Makefile:
INCLUDES += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)chip}
INCLUDES += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)common}
INCLUDES += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)$(ARCH_SUBDIR)}
INCLUDES += ${shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)sched}
CPPFLAGS += $(INCLUDES) $(EXTRAFLAGS)
CFLAGS += $(INCLUDES) $(EXTRAFLAGS)
CXXFLAGS += $(INCLUDES) $(EXTRAFLAGS)
AFLAGS += $(INCLUDES) $(EXTRAFLAGS)
--------------------------------------------------------------------------------
All compilation options will be included recursively,
which will be delayed until the compilation options are actually used:
tools/Config.mk:
--------------------------------------------------------------------------------
define COMPILE
@echo "CC: $1"
$(Q) $(CC) -c $(CFLAGS) $($(strip $1)_CFLAGS) $1 -o $2
endef
--------------------------------------------------------------------------------
All compile flags to be reexecuted $(INCDIR) as long as one file needs to be compiled,
but in fact, the compilation options have not changed in the current directory.
So the we recommand to change the syntax of assignment
From
Recursive (=)
To
Simple (:=)
In this way, we can ensure that all compilation options are expanded only once and reducing repeated works.
Signed-off-by: chao.an <anchao@xiaomi.com>
This commit is contained in:
@@ -56,7 +56,7 @@ ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase
|
||||
ARCHASMLIST = -list -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
|
||||
ARCHASMWARNINGS = -warn
|
||||
ARCHASMDEFINES = -define:$(ARCHCPUDEF)=1 -define:$(ARCHFAMILY)=1 -define:__ASSEMBLY__
|
||||
AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
AFLAGS := $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
|
||||
# Compiler definitions
|
||||
|
||||
@@ -66,11 +66,11 @@ ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm
|
||||
ARCHWARNINGS = -warn
|
||||
ARCHDEFINES = -define:$(ARCHCPUDEF) -define:$(ARCHFAMILY)
|
||||
ARCHINCLUDES = $(ARCHSTDINCLUDES)
|
||||
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
|
||||
CPPDEFINES = -D$(ARCHFAMILY) -D$(ARCHCPUDEF) -D__ASSEMBLY__
|
||||
CPPINCLUDES = -I$(TOPDIR)$(DELIM)include
|
||||
CPPFLAGS = $(CPPDEFINES) $(CPPINCLUDES)
|
||||
CPPFLAGS := $(CPPDEFINES) $(CPPINCLUDES)
|
||||
|
||||
# Librarian definitions
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase
|
||||
ARCHASMLIST = -list -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
|
||||
ARCHASMWARNINGS = -warn
|
||||
ARCHASMDEFINES = -define:$(ARCHCPUDEF)=1 -define:$(ARCHFAMILY)=1 -define:__ASSEMBLY__
|
||||
AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
AFLAGS := $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
|
||||
# Compiler definitions
|
||||
|
||||
@@ -66,11 +66,11 @@ ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm
|
||||
ARCHWARNINGS = -warn
|
||||
ARCHDEFINES = -define:$(ARCHCPUDEF) -define:$(ARCHFAMILY)
|
||||
ARCHINCLUDES = $(ARCHSTDINCLUDES)
|
||||
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
|
||||
CPPDEFINES = -D$(ARCHFAMILY) -D$(ARCHCPUDEF) -D__ASSEMBLY__
|
||||
CPPINCLUDES = -I$(TOPDIR)$(DELIM)include
|
||||
CPPFLAGS = $(CPPDEFINES) $(CPPINCLUDES)
|
||||
CPPFLAGS := $(CPPDEFINES) $(CPPINCLUDES)
|
||||
|
||||
# Librarian definitions
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase
|
||||
ARCHASMLIST = -list -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
|
||||
ARCHASMWARNINGS = -warn
|
||||
ARCHASMDEFINES = -define:$(ARCHCPUDEF)=1 -define:$(ARCHFAMILY)=1 -define:__ASSEMBLY__
|
||||
AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
AFLAGS := $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
|
||||
# Compiler definitions
|
||||
|
||||
@@ -66,11 +66,11 @@ ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm
|
||||
ARCHWARNINGS = -warn
|
||||
ARCHDEFINES = -define:$(ARCHCPUDEF) -define:$(ARCHFAMILY)
|
||||
ARCHINCLUDES = $(ARCHSTDINCLUDES)
|
||||
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
|
||||
CPPDEFINES = -D$(ARCHFAMILY) -D$(ARCHCPUDEF) -D__ASSEMBLY__
|
||||
CPPINCLUDES = -I$(TOPDIR)$(DELIM)include
|
||||
CPPFLAGS = $(CPPDEFINES) $(CPPINCLUDES)
|
||||
CPPFLAGS := $(CPPDEFINES) $(CPPINCLUDES)
|
||||
|
||||
# Librarian definitions
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase
|
||||
ARCHASMLIST = -list -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
|
||||
ARCHASMWARNINGS = -warn
|
||||
ARCHASMDEFINES = -define:$(ARCHCPUDEF)=1 -define:$(ARCHFAMILY)=1 -define:__ASSEMBLY__
|
||||
AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
AFLAGS := $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
|
||||
# Compiler definitions
|
||||
|
||||
@@ -51,11 +51,11 @@ ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm
|
||||
ARCHWARNINGS = -warn
|
||||
ARCHDEFINES = -define:$(ARCHCPUDEF) -define:$(ARCHFAMILY)
|
||||
ARCHINCLUDES = $(ARCHSTDINCLUDES)
|
||||
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
|
||||
CPPDEFINES = -D$(ARCHFAMILY) -D$(ARCHCPUDEF) -D__ASSEMBLY__
|
||||
CPPINCLUDES = -I$(TOPDIR)$(DELIM)include
|
||||
CPPFLAGS = $(CPPDEFINES) $(CPPINCLUDES)
|
||||
CPPFLAGS := $(CPPDEFINES) $(CPPINCLUDES)
|
||||
|
||||
# Librarian definitions
|
||||
|
||||
|
||||
@@ -37,6 +37,6 @@ include $(TOPDIR)/.config
|
||||
include $(TOPDIR)/tools/Config.mk
|
||||
include $(TOPDIR)/arch/z80/src/z180/Toolchain.defs
|
||||
|
||||
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
AFLAGS = -x -a -l -o -s -g
|
||||
CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
AFLAGS := -x -a -l -o -s -g
|
||||
|
||||
@@ -56,7 +56,7 @@ ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase $(ARCHREVAA)
|
||||
ARCHASMLIST = -list -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
|
||||
ARCHASMWARNINGS = -warn
|
||||
ARCHASMDEFINES = -define:$(ARCHCPUDEF)=1 -define:$(ARCHSERIESDEF)=1 -define:$(ARCHFAMILYDEF)=1 -define:__ASSEMBLY__
|
||||
AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
AFLAGS := $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
|
||||
# Compiler definitions
|
||||
|
||||
@@ -66,11 +66,11 @@ ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm
|
||||
ARCHWARNINGS = -warn
|
||||
ARCHDEFINES = -define:$(ARCHFAMILYDEF) -define:$(ARCHCPUDEF) -define:$(ARCHSERIESDEF)
|
||||
ARCHINCLUDES = $(ARCHSTDINCLUDES)
|
||||
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
|
||||
CPPDEFINES = -D$(ARCHFAMILYDEF) -D$(ARCHCPUDEF) -D$(ARCHSERIESDEF) -D__ASSEMBLY__
|
||||
CPPINCLUDES = -I$(TOPDIR)$(DELIM)include
|
||||
CPPFLAGS = $(CPPDEFINES) $(CPPINCLUDES)
|
||||
CPPFLAGS := $(CPPDEFINES) $(CPPINCLUDES)
|
||||
|
||||
# Librarian definitions
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase $(ARCHREVAA)
|
||||
ARCHASMLIST = -list -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
|
||||
ARCHASMWARNINGS = -warn
|
||||
ARCHASMDEFINES = -define:$(ARCHCPUDEF)=1 -define:$(ARCHSERIESDEF)=1 -define:$(ARCHFAMILYDEF)=1 -define:__ASSEMBLY__
|
||||
AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
AFLAGS := $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
||||
|
||||
# Compiler definitions
|
||||
|
||||
@@ -65,11 +65,11 @@ ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm
|
||||
ARCHWARNINGS = -warn
|
||||
ARCHDEFINES = -define:$(ARCHFAMILYDEF) -define:$(ARCHCPUDEF) -define:$(ARCHSERIESDEF)
|
||||
ARCHINCLUDES = $(ARCHSTDINCLUDES)
|
||||
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
|
||||
CPPDEFINES = -D$(ARCHFAMILYDEF) -D$(ARCHCPUDEF) -D$(ARCHSERIESDEF) -D__ASSEMBLY__
|
||||
CPPINCLUDES = -I$(TOPDIR)$(DELIM)include
|
||||
CPPFLAGS = $(CPPDEFINES) $(CPPINCLUDES)
|
||||
CPPFLAGS := $(CPPDEFINES) $(CPPINCLUDES)
|
||||
|
||||
# Librarian definitions
|
||||
|
||||
|
||||
@@ -37,6 +37,6 @@ include $(TOPDIR)/.config
|
||||
include $(TOPDIR)/tools/Config.mk
|
||||
include $(TOPDIR)/arch/z80/src/z80/Toolchain.defs
|
||||
|
||||
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
AFLAGS = -x -a -l -o -s -g
|
||||
CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
AFLAGS := -x -a -l -o -s -g
|
||||
|
||||
Reference in New Issue
Block a user