1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-24 00:35:39 +03:00

Makefile optimisation corrections.

New proposal for Makefile optimisation cleanup. Based on @AndersHoglund's 'makefile_optimization_cleanup'.

Separated out debug build path.
This commit is contained in:
Anders Hoglund 2016-12-13 11:41:29 +01:00 committed by Michael Keller
parent c14085a158
commit 33981ac366

View file

@ -598,7 +598,11 @@ HIGHEND_SRC = \
telemetry/mavlink.c \ telemetry/mavlink.c \
sensors/esc_sensor.c \ sensors/esc_sensor.c \
SPEED_OPTIMISED_SRC = \ SPEED_OPTIMISED_SRC := ""
SIZE_OPTIMISED_SRC := ""
ifeq ($(TARGET),$(filter $(TARGET),$(F3_TARGETS)))
SPEED_OPTIMISED_SRC := $(SPEED_OPTIMISED_SRC) \
common/encoding.c \ common/encoding.c \
common/filter.c \ common/filter.c \
common/maths.c \ common/maths.c \
@ -682,7 +686,7 @@ SPEED_OPTIMISED_SRC = \
telemetry/mavlink.c \ telemetry/mavlink.c \
telemetry/esc_telemetry.c \ telemetry/esc_telemetry.c \
SIZE_OPTIMISED_SRC = \ SIZE_OPTIMISED_SRC := $(SIZE_OPTIMISED_SRC) \
drivers/serial_escserial.c \ drivers/serial_escserial.c \
io/serial_cli.c \ io/serial_cli.c \
io/serial_4way.c \ io/serial_4way.c \
@ -697,6 +701,7 @@ SIZE_OPTIMISED_SRC = \
cms/cms_menu_misc.c \ cms/cms_menu_misc.c \
cms/cms_menu_osd.c \ cms/cms_menu_osd.c \
cms/cms_menu_vtx.c cms/cms_menu_vtx.c
endif #F3
ifeq ($(TARGET),$(filter $(TARGET),$(F4_TARGETS))) ifeq ($(TARGET),$(filter $(TARGET),$(F4_TARGETS)))
VCP_SRC = \ VCP_SRC = \
@ -856,32 +861,41 @@ SIZE := $(ARM_SDK_PREFIX)size
# Tool options. # Tool options.
# #
ifeq ($(DEBUG),GDB) ifneq ($(DEBUG),GDB)
OPTIMISE = -O0 OPTIMISATION_BASE := -flto -fuse-linker-plugin -ffast-math
CC_SPEED_OPTIMISATION = $(OPTIMISE) OPTIMISE_SPEED := ""
CC_OPTIMISATION = $(OPTIMISE) OPTIMISE_SIZE := ""
CC_SIZE_OPTIMISATION = $(OPTIMISE)
LTO_FLAGS = $(OPTIMISE)
else
ifeq ($(TARGET),$(filter $(TARGET),$(F1_TARGETS))) ifeq ($(TARGET),$(filter $(TARGET),$(F1_TARGETS)))
OPTIMISE_SPEED = -Os OPTIMISE_DEFAULT := -Os
OPTIMISE = -Os
OPTIMISE_SIZE = -Os LTO_FLAGS := $(OPTIMISATION_BASE) $(OPTIMISE_DEFAULT)
else ifeq ($(TARGET),$(filter $(TARGET),$(F3_TARGETS))) else ifeq ($(TARGET),$(filter $(TARGET),$(F3_TARGETS)))
OPTIMISE_SPEED = -Ofast OPTIMISE_DEFAULT := -O2
OPTIMISE = -O2 OPTIMISE_SPEED := -Ofast
OPTIMISE_SIZE = -Os OPTIMISE_SIZE := -Os
LTO_FLAGS := $(OPTIMISATION_BASE) $(OPTIMISE_SPEED)
else else
OPTIMISE_SPEED = -Ofast OPTIMISE_DEFAULT := -Ofast
OPTIMISE = -Ofast
OPTIMISE_SIZE = -Ofast LTO_FLAGS := $(OPTIMISATION_BASE) $(OPTIMISE_DEFAULT)
endif
OPTIMISATION_BASE = -flto -fuse-linker-plugin -ffast-math endif #TARGETS
CC_SPEED_OPTIMISATION = $(OPTIMISATION_BASE) $(OPTIMISE_SPEED)
CC_OPTIMISATION = $(OPTIMISATION_BASE) $(OPTIMISE) CC_DEFAULT_OPTIMISATION := $(OPTIMISATION_BASE) $(OPTIMISE_DEFAULT)
CC_SIZE_OPTIMISATION = $(OPTIMISATION_BASE) $(OPTIMISE_SIZE) CC_SPEED_OPTIMISATION := $(OPTIMISATION_BASE) $(OPTIMISE_SPEED)
LTO_FLAGS = $(OPTIMISATION_BASE) $(OPTIMISE_SPEED) CC_SIZE_OPTIMISATION := $(OPTIMISATION_BASE) $(OPTIMISE_SIZE)
endif
else #DEBUG
OPTIMISE_DEFAULT := -O0
CC_DEBUG_OPTIMISATION := $(OPTIMISE_DEFAULT)
LTO_FLAGS := $(OPTIMISE_DEFAULT)
endif #DEBUG
DEBUG_FLAGS = -ggdb3 -DDEBUG DEBUG_FLAGS = -ggdb3 -DDEBUG
@ -966,16 +980,23 @@ $(TARGET_ELF): $(TARGET_OBJS)
$(V0) $(SIZE) $(TARGET_ELF) $(V0) $(SIZE) $(TARGET_ELF)
# Compile # Compile
ifneq ($(DEBUG),GDB)
$(OBJECT_DIR)/$(TARGET)/%.o: %.c $(OBJECT_DIR)/$(TARGET)/%.o: %.c
$(V1) mkdir -p $(dir $@) $(V1) mkdir -p $(dir $@)
$(V1) $(if $(findstring $(subst ./src/main/,,$<), $(SPEED_OPTIMISED_SRC)), \ $(V1) $(if $(findstring $(subst ./src/main/,,$<),$(SPEED_OPTIMISED_SRC)), \
echo "%% (speed optimised) $(notdir $<)" "$(STDOUT)" && \ echo "%% (speed optimised) $(notdir $<)" "$(STDOUT)" && \
$(CROSS_CC) -c -o $@ $(CFLAGS) $(CC_SPEED_OPTIMISATION) $<, \ $(CROSS_CC) -c -o $@ $(CFLAGS) $(CC_SPEED_OPTIMISATION) $<, \
$(if $(findstring $(subst ./src/main/,,$<), $(SIZE_OPTIMISED_SRC)), \ $(if $(findstring $(subst ./src/main/,,$<),$(SIZE_OPTIMISED_SRC)), \
echo "%% (size optimised) $(notdir $<)" "$(STDOUT)" && \ echo "%% (size optimised) $(notdir $<)" "$(STDOUT)" && \
$(CROSS_CC) -c -o $@ $(CFLAGS) $(CC_SIZE_OPTIMISATION) $<, \ $(CROSS_CC) -c -o $@ $(CFLAGS) $(CC_SIZE_OPTIMISATION) $<, \
echo "%% $(notdir $<)" "$(STDOUT)" && \ echo "%% $(notdir $<)" "$(STDOUT)" && \
$(CROSS_CC) -c -o $@ $(CFLAGS) $(CC_OPTIMISATION) $<)) $(CROSS_CC) -c -o $@ $(CFLAGS) $(CC_DEFAULT_OPTIMISATION) $<))
else
$(OBJECT_DIR)/$(TARGET)/%.o: %.c
$(V1) mkdir -p $(dir $@)
$(V1) echo "%% $(notdir $<)" "$(STDOUT)" && \
$(CROSS_CC) -c -o $@ $(CFLAGS) $(CC_DEBUG_OPTIMISATION) $<
endif
# Assemble # Assemble
$(OBJECT_DIR)/$(TARGET)/%.o: %.s $(OBJECT_DIR)/$(TARGET)/%.o: %.s