Add support to build with ccache in the build system
Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5297 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
0ab9d12e29
commit
516a2a7bfa
12
Makefile
12
Makefile
|
@ -61,6 +61,7 @@ endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CPP:= $(CC) -x assembler-with-cpp -DASSEMBLY -E
|
CPP:= $(CC) -x assembler-with-cpp -DASSEMBLY -E
|
||||||
|
ROMCC:= $(obj)/romcc
|
||||||
HOSTCC = gcc
|
HOSTCC = gcc
|
||||||
HOSTCXX = g++
|
HOSTCXX = g++
|
||||||
HOSTCFLAGS := -I$(srck) -I$(objk) -g
|
HOSTCFLAGS := -I$(srck) -I$(objk) -g
|
||||||
|
@ -85,6 +86,17 @@ HOSTCC:=clang
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_CCACHE),y)
|
||||||
|
CCACHE:=CCACHE_COMPILERCHECK=content $(wildcard $(addsuffix /ccache,$(subst :, ,$(PATH))))
|
||||||
|
ifeq ($(CCACHE),)
|
||||||
|
$(error ccache selected, but not found in PATH)
|
||||||
|
endif
|
||||||
|
CC := $(CCACHE) $(CC)
|
||||||
|
HOSTCC := $(CCACHE) $(HOSTCC)
|
||||||
|
HOSTCXX := $(CCACHE) $(HOSTCXX)
|
||||||
|
ROMCC := $(CCACHE) $(ROMCC)
|
||||||
|
endif
|
||||||
|
|
||||||
strip_quotes = $(subst ",,$(subst \",,$(1)))
|
strip_quotes = $(subst ",,$(subst \",,$(1)))
|
||||||
|
|
||||||
ARCHDIR-$(CONFIG_ARCH_X86) := i386
|
ARCHDIR-$(CONFIG_ARCH_X86) := i386
|
||||||
|
|
|
@ -62,6 +62,7 @@ endchoice
|
||||||
config SCANBUILD_ENABLE
|
config SCANBUILD_ENABLE
|
||||||
bool "Build with scan-build for static analysis"
|
bool "Build with scan-build for static analysis"
|
||||||
default n
|
default n
|
||||||
|
depends on !CCACHE
|
||||||
help
|
help
|
||||||
Changes the build process to scan-build is used.
|
Changes the build process to scan-build is used.
|
||||||
Requires scan-build in path.
|
Requires scan-build in path.
|
||||||
|
@ -73,6 +74,13 @@ config SCANBUILD_REPORT_LOCATION
|
||||||
help
|
help
|
||||||
Where the scan-build report should be stored
|
Where the scan-build report should be stored
|
||||||
|
|
||||||
|
config CCACHE
|
||||||
|
bool "ccache"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Enables the use of ccache for faster builds.
|
||||||
|
Requires ccache in path.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
source src/mainboard/Kconfig
|
source src/mainboard/Kconfig
|
||||||
|
|
|
@ -71,7 +71,7 @@ $(obj)/mainboard/$(MAINBOARDDIR)/bootblock.inc: $(src)/arch/i386/init/$(subst ",
|
||||||
@printf " ROMCC $(subst $(obj)/,,$(@))\n"
|
@printf " ROMCC $(subst $(obj)/,,$(@))\n"
|
||||||
$(CC) -MM -MT$(obj)/mainboard/$(MAINBOARDDIR)/bootblock.inc \
|
$(CC) -MM -MT$(obj)/mainboard/$(MAINBOARDDIR)/bootblock.inc \
|
||||||
$< > $(obj)/mainboard/$(MAINBOARDDIR)/bootblock.inc.d
|
$< > $(obj)/mainboard/$(MAINBOARDDIR)/bootblock.inc.d
|
||||||
$(obj)/romcc $(bootblock_romccflags) $(ROMCCFLAGS) $(INCLUDES) $< -o $@
|
$(ROMCC) -c -S $(bootblock_romccflags) $(ROMCCFLAGS) -I. $(INCLUDES) $< -o $@
|
||||||
|
|
||||||
$(obj)/bootblock.elf: $(obj)/mainboard/$(MAINBOARDDIR)/bootblock.o $(obj)/bootblock/ldscript.ld
|
$(obj)/bootblock.elf: $(obj)/mainboard/$(MAINBOARDDIR)/bootblock.o $(obj)/bootblock/ldscript.ld
|
||||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||||
|
|
|
@ -195,7 +195,7 @@ ROMCCFLAGS ?= -mcpu=p2 -O2
|
||||||
|
|
||||||
$(obj)/mainboard/$(MAINBOARDDIR)/romstage.inc: $(src)/mainboard/$(MAINBOARDDIR)/romstage.c $(obj)/romcc $(OPTION_TABLE_H) $(obj)/build.h
|
$(obj)/mainboard/$(MAINBOARDDIR)/romstage.inc: $(src)/mainboard/$(MAINBOARDDIR)/romstage.c $(obj)/romcc $(OPTION_TABLE_H) $(obj)/build.h
|
||||||
printf " ROMCC romstage.inc\n"
|
printf " ROMCC romstage.inc\n"
|
||||||
$(obj)/romcc $(ROMCCFLAGS) -include $(obj)/build.h $(INCLUDES) $< -o $@
|
$(ROMCC) -c -S $(ROMCCFLAGS) -include $(obj)/build.h -I. $(INCLUDES) $< -o $@
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,9 @@ silent=
|
||||||
# clang mode enabled by -sb option.
|
# clang mode enabled by -sb option.
|
||||||
scanbuild=false
|
scanbuild=false
|
||||||
|
|
||||||
|
# use ccache
|
||||||
|
ccache=false
|
||||||
|
|
||||||
# stackprotect mode enabled by -ns option.
|
# stackprotect mode enabled by -ns option.
|
||||||
stackprotect=false
|
stackprotect=false
|
||||||
|
|
||||||
|
@ -174,6 +177,11 @@ function create_config
|
||||||
echo "CONFIG_DEFAULT_CONSOLE_LOGLEVEL=$loglevel" >> .config
|
echo "CONFIG_DEFAULT_CONSOLE_LOGLEVEL=$loglevel" >> .config
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$ccache" = "true" ]; then
|
||||||
|
printf "(ccache enabled) "
|
||||||
|
echo "CONFIG_CCACHE=y" >> .config
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$scanbuild" = "true" ]; then
|
if [ "$scanbuild" = "true" ]; then
|
||||||
printf "(scan-build enabled) "
|
printf "(scan-build enabled) "
|
||||||
echo "CONFIG_SCANBUILD_ENABLE=y" >> .config
|
echo "CONFIG_SCANBUILD_ENABLE=y" >> .config
|
||||||
|
@ -495,6 +503,7 @@ function myhelp
|
||||||
printf " [-s|--silent] omit compiler calls in logs\n"
|
printf " [-s|--silent] omit compiler calls in logs\n"
|
||||||
printf " [-ns|--nostackprotect] use gcc -fno-stack-protector option\n"
|
printf " [-ns|--nostackprotect] use gcc -fno-stack-protector option\n"
|
||||||
printf " [-sb|--scan-build] use clang's static analyzer\n"
|
printf " [-sb|--scan-build] use clang's static analyzer\n"
|
||||||
|
printf " [-y|--ccache] use ccache\n"
|
||||||
printf " [-C|--config] configure-only mode\n"
|
printf " [-C|--config] configure-only mode\n"
|
||||||
printf " [-l|--loglevel <num>] set loglevel\n"
|
printf " [-l|--loglevel <num>] set loglevel\n"
|
||||||
printf " [lbroot] absolute path to coreboot sources\n"
|
printf " [lbroot] absolute path to coreboot sources\n"
|
||||||
|
@ -530,11 +539,11 @@ test "$ROOT" = "" && ROOT=$( cd ../..; pwd )
|
||||||
getoptbrand="`getopt -V`"
|
getoptbrand="`getopt -V`"
|
||||||
if [ "${getoptbrand:0:6}" == "getopt" ]; then
|
if [ "${getoptbrand:0:6}" == "getopt" ]; then
|
||||||
# Detected GNU getopt that supports long options.
|
# Detected GNU getopt that supports long options.
|
||||||
args=`getopt -l version,verbose,help,all,target:,broken,payloads:,test,cpus:,silent,xml,config,loglevel: Vvhat:bp:Tc:sxCl: -- "$@"`
|
args=`getopt -l version,verbose,help,all,target:,broken,payloads:,test,cpus:,silent,xml,config,loglevel:,ccache Vvhat:bp:Tc:sxCl:y -- "$@"`
|
||||||
eval set "$args"
|
eval set "$args"
|
||||||
else
|
else
|
||||||
# Detected non-GNU getopt
|
# Detected non-GNU getopt
|
||||||
args=`getopt Vvhat:bp:Tc:sxCl:o $*`
|
args=`getopt Vvhat:bp:Tc:sxCl:y $*`
|
||||||
set -- $args
|
set -- $args
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -559,6 +568,7 @@ while true ; do
|
||||||
-s|--silent) shift; silent="-s";;
|
-s|--silent) shift; silent="-s";;
|
||||||
-ns|--nostackprotect) shift; stackprotect=true;;
|
-ns|--nostackprotect) shift; stackprotect=true;;
|
||||||
-sb|--scan-build) shift; scanbuild=true;;
|
-sb|--scan-build) shift; scanbuild=true;;
|
||||||
|
-y|--ccache) shift; ccache=true;;
|
||||||
-C|--config) shift; configureonly=1;;
|
-C|--config) shift; configureonly=1;;
|
||||||
-l|--loglevel) shift; loglevel="$1"; shift;;
|
-l|--loglevel) shift; loglevel="$1"; shift;;
|
||||||
--) shift; break;;
|
--) shift; break;;
|
||||||
|
|
|
@ -24968,10 +24968,14 @@ static void compile(const char *filename,
|
||||||
state.errout = stderr;
|
state.errout = stderr;
|
||||||
state.dbgout = stdout;
|
state.dbgout = stdout;
|
||||||
/* Remember the output filename */
|
/* Remember the output filename */
|
||||||
state.output = fopen(state.compiler->ofilename, "w");
|
if ((state.compiler->flags & COMPILER_PP_ONLY) && (strcmp("auto.inc",state.compiler->ofilename) == 0)) {
|
||||||
if (!state.output) {
|
state.output = stdout;
|
||||||
error(&state, 0, "Cannot open output file %s\n",
|
} else {
|
||||||
state.compiler->ofilename);
|
state.output = fopen(state.compiler->ofilename, "w");
|
||||||
|
if (!state.output) {
|
||||||
|
error(&state, 0, "Cannot open output file %s\n",
|
||||||
|
state.compiler->ofilename);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* Make certain a good cleanup happens */
|
/* Make certain a good cleanup happens */
|
||||||
exit_state = &state;
|
exit_state = &state;
|
||||||
|
@ -25146,6 +25150,12 @@ int main(int argc, char **argv)
|
||||||
else if (strncmp(argv[1], "-m", 2) == 0) {
|
else if (strncmp(argv[1], "-m", 2) == 0) {
|
||||||
result = arch_encode_flag(&arch, argv[1]+2);
|
result = arch_encode_flag(&arch, argv[1]+2);
|
||||||
}
|
}
|
||||||
|
else if (strncmp(argv[1], "-c", 2) == 0) {
|
||||||
|
result = 0;
|
||||||
|
}
|
||||||
|
else if (strncmp(argv[1], "-S", 2) == 0) {
|
||||||
|
result = 0;
|
||||||
|
}
|
||||||
else if (strncmp(argv[1], "-include", 10) == 0) {
|
else if (strncmp(argv[1], "-include", 10) == 0) {
|
||||||
struct filelist *old_head = include_filelist;
|
struct filelist *old_head = include_filelist;
|
||||||
include_filelist = malloc(sizeof(struct filelist));
|
include_filelist = malloc(sizeof(struct filelist));
|
||||||
|
|
Loading…
Reference in New Issue