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:
parent
c14085a158
commit
33981ac366
1 changed files with 49 additions and 28 deletions
77
Makefile
77
Makefile
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue