X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=Makefile.in;h=0a64fc10e5b053f9ea265033a5157e57179cf46e;hb=b467efaa91d270f8d057bbae9ab915d068a90ec4;hp=a52ff56e5c5fd97f9ca05e58338cc29075baa4f3;hpb=50ad1254d5030d0804cbf89c758359ae202e8d55;p=binutils-gdb.git diff --git a/Makefile.in b/Makefile.in index a52ff56e5c5..0a64fc10e5b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -412,6 +412,49 @@ CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates GOCFLAGS = $(CFLAGS) +# Pass additional PGO and LTO compiler options to the PGO build. +BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS) +override CFLAGS += $(BUILD_CFLAGS) +override CXXFLAGS += $(BUILD_CFLAGS) + +# Additional PGO and LTO compiler options to generate profiling data +# for the PGO build. +PGO_BUILD_GEN_FLAGS_TO_PASS = \ + PGO_BUILD_CFLAGS="@PGO_BUILD_GEN_CFLAGS@" \ + PGO_BUILD_LTO_CFLAGS="@PGO_BUILD_LTO_CFLAGS@" + +# NB: Filter out any compiler options which may fail PGO training runs. +PGO_BUILD_TRAINING_CFLAGS:= \ + $(filter-out -Werror=%,$(CFLAGS)) +PGO_BUILD_TRAINING_CXXFLAGS:=\ + $(filter-out -Werror=%,$(CXXFLAGS)) +PGO_BUILD_TRAINING_CFLAGS:= \ + $(filter-out -Wall,$(PGO_BUILD_TRAINING_CFLAGS)) +PGO_BUILD_TRAINING_CXXFLAGS:= \ + $(filter-out -Wall,$(PGO_BUILD_TRAINING_CXXFLAGS)) +PGO_BUILD_TRAINING_CFLAGS:= \ + $(filter-out -specs=%,$(PGO_BUILD_TRAINING_CFLAGS)) +PGO_BUILD_TRAINING_CXXFLAGS:= \ + $(filter-out -specs=%,$(PGO_BUILD_TRAINING_CXXFLAGS)) +PGO_BUILD_TRAINING_FLAGS_TO_PASS = \ + PGO_BUILD_TRAINING=yes \ + CFLAGS_FOR_TARGET="$(PGO_BUILD_TRAINING_CFLAGS)" \ + CXXFLAGS_FOR_TARGET="$(PGO_BUILD_TRAINING_CXXFLAGS)" + +# Ignore "make check" errors in PGO training runs. +PGO_BUILD_TRAINING_MFLAGS = -i + +# Additional PGO and LTO compiler options to use profiling data for the +# PGO build. +PGO_BUILD_USE_FLAGS_TO_PASS = \ + PGO_BUILD_CFLAGS="@PGO_BUILD_USE_CFLAGS@" \ + PGO_BUILD_LTO_CFLAGS="@PGO_BUILD_LTO_CFLAGS@" + +# PGO training targets for the PGO build. FIXME: Add gold tests to +# training. +PGO-TRAINING-TARGETS = binutils gas gdb ld sim +PGO_BUILD_TRAINING = $(addprefix maybe-check-,$(PGO-TRAINING-TARGETS)) + CREATE_GCOV = create_gcov TFLAGS = @@ -985,6 +1028,12 @@ configure-target: \ # The target built for a native non-bootstrap build. .PHONY: all + +# --enable-pgo-build enables the PGO build. +# 1. First build with -fprofile-generate. +# 2. Use "make maybe-check-*" to generate profiling data. +# 3. Use "make clean" to remove the previous build. +# 4. Rebuild with -fprofile-use. all: @if gcc-bootstrap [ -f stage_final ] || echo stage3 > stage_final @@ -993,7 +1042,7 @@ all: $(MAKE) $(RECURSE_FLAGS_TO_PASS) `cat stage_final`-bubble @endif gcc-bootstrap @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ + +@r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @if gcc-bootstrap if [ -f stage_last ]; then \ @@ -1001,7 +1050,17 @@ all: $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target; \ else \ @endif gcc-bootstrap - $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-host all-target \ + $(MAKE) $(RECURSE_FLAGS_TO_PASS) \ + $(PGO_BUILD_GEN_FLAGS_TO_PASS) all-host all-target \ +@if pgo-build + && $(MAKE) $(RECURSE_FLAGS_TO_PASS) \ + $(PGO_BUILD_TRAINING_MFLAGS) \ + $(PGO_BUILD_TRAINING_FLAGS_TO_PASS) \ + $(PGO_BUILD_TRAINING) \ + && $(MAKE) $(RECURSE_FLAGS_TO_PASS) clean \ + && $(MAKE) $(RECURSE_FLAGS_TO_PASS) \ + $(PGO_BUILD_USE_FLAGS_TO_PASS) all-host all-target \ +@endif pgo-build @if gcc-bootstrap ; \ fi \ @@ -52111,6 +52170,7 @@ all-stage3-ld: maybe-all-stage3-libctf all-stage4-ld: maybe-all-stage4-libctf all-stageprofile-ld: maybe-all-stageprofile-libctf all-stagefeedback-ld: maybe-all-stagefeedback-libctf +install-ld: maybe-install-libctf install-binutils: maybe-install-opcodes install-strip-binutils: maybe-install-strip-opcodes install-opcodes: maybe-install-bfd