mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[build] Use variants
- Move helpers functions into build/helpers.mak - Move official warning into official targets only
This commit is contained in:
36
Makefile
36
Makefile
@@ -1,34 +1,20 @@
|
||||
include build/config.mak
|
||||
|
||||
# Disable default Make rules
|
||||
.SUFFIXES:
|
||||
|
||||
object_for = $(addprefix $(BUILD_DIR)/,$(addsuffix .o,$(basename $(1))))
|
||||
|
||||
# Define the default recipe
|
||||
|
||||
default:
|
||||
|
||||
# Define a standard rule helper
|
||||
# If passed a last parameter value of with_local_version, we also define an
|
||||
# extra rule that can build source files within the $(BUILD_DIR). This is useful
|
||||
# for rules that can be applied for intermediate objects (for example, when
|
||||
# going .png -> .cpp -> .o).
|
||||
include build/config.mak
|
||||
include build/defaults.mak
|
||||
include build/platform.$(PLATFORM).mak
|
||||
include build/toolchain.$(TOOLCHAIN).mak
|
||||
include build/variants.mak
|
||||
include build/helpers.mk
|
||||
|
||||
define rule_label
|
||||
@ echo "$(shell printf "%-8s" $(strip $(1)))$(@:$(BUILD_DIR)/%=%)"
|
||||
define foo
|
||||
endef
|
||||
|
||||
define rule_for
|
||||
ifeq ($(strip $(5)),with_local_version)
|
||||
$(addprefix $$(BUILD_DIR)/,$(strip $(2))): $(addprefix $$(BUILD_DIR)/,$(strip $(3))) | $(if $(findstring official,${MAKECMDGOALS}),official_authorization)
|
||||
@ echo "$(shell printf "%-8s" $(strip $(1)))$$(@:$$(BUILD_DIR)/%=%)"
|
||||
$(Q) $(4)
|
||||
endif
|
||||
$(addprefix $$(BUILD_DIR)/,$(strip $(2))): $(strip $(3)) | $$$$(@D)/. $(if $(findstring official,${MAKECMDGOALS}),official_authorization)
|
||||
@ echo "$(shell printf "%-8s" $(strip $(1)))$$(@:$$(BUILD_DIR)/%=%)"
|
||||
$(Q) $(4)
|
||||
endef
|
||||
$(eval $(call foo))
|
||||
|
||||
.PHONY: info
|
||||
info:
|
||||
@@ -83,7 +69,9 @@ $(BUILD_DIR)%/.:
|
||||
# Each sub-Makefile can either add sources to $(%_src) variables or define a
|
||||
# new executable target. The $(%_src) variables list the sources that can be
|
||||
# built and linked to executables being generated.
|
||||
|
||||
ifndef USE_LIBA
|
||||
$(error platform.mak should define USE_LIBA)
|
||||
endif
|
||||
ifeq ($(USE_LIBA),0)
|
||||
include liba/Makefile.bridge
|
||||
else
|
||||
@@ -102,7 +90,7 @@ include build/struct_layout/Makefile
|
||||
include build/scenario/Makefile
|
||||
include quiz/Makefile # Quiz needs to be included at the end
|
||||
|
||||
all_src = $(apps_all_src) $(escher_src) $(ion_all_src) $(kandinsky_src) $(liba_src) $(libaxx_src) $(poincare_src) $(python_src) $(runner_src) $(ion_target_device_flasher_light_src) $(ion_target_device_flasher_verbose_src) $(ion_target_device_bench_src) $(tests_src)
|
||||
all_src = $(apps_src) $(escher_src) $(ion_src) $(kandinsky_src) $(liba_src) $(libaxx_src) $(poincare_src) $(python_src) $(runner_src) $(ion_device_flasher_src) $(ion_device_bench_src) $(tests_src)
|
||||
all_objs = $(call object_for,$(all_src))
|
||||
.SECONDARY: $(all_objs)
|
||||
|
||||
|
||||
@@ -10,8 +10,14 @@ apps =
|
||||
# (path to the apps header).
|
||||
$(foreach i,${EPSILON_APPS},$(eval include apps/$(i)/Makefile))
|
||||
|
||||
app_src += $(addprefix apps/,\
|
||||
apps_src += $(addprefix apps/,\
|
||||
apps_container.cpp \
|
||||
apps_container_launch_default.cpp:-onboarding \
|
||||
apps_container_launch_on_boarding.cpp:+onboarding \
|
||||
apps_container_prompt_beta.cpp:+beta \
|
||||
apps_container_prompt_none.cpp:-beta \
|
||||
apps_container_prompt_none.cpp:-update \
|
||||
apps_container_prompt_update.cpp:+update \
|
||||
apps_container_storage.cpp \
|
||||
apps_window.cpp \
|
||||
backlight_dimming_timer.cpp \
|
||||
@@ -19,6 +25,8 @@ app_src += $(addprefix apps/,\
|
||||
battery_view.cpp \
|
||||
empty_battery_window.cpp \
|
||||
exam_pop_up_controller.cpp \
|
||||
exam_mode_configuration_official.cpp:+official \
|
||||
exam_mode_configuration_non_official.cpp:-official \
|
||||
global_preferences.cpp \
|
||||
i18n.py \
|
||||
lock_view.cpp \
|
||||
@@ -32,14 +40,6 @@ app_src += $(addprefix apps/,\
|
||||
)
|
||||
|
||||
tests_src += apps/exam_mode_configuration_official.cpp
|
||||
apps_official += apps/exam_mode_configuration_official.cpp
|
||||
apps_non_official += apps/exam_mode_configuration_non_official.cpp
|
||||
|
||||
apps_launch_on_boarding_src += apps/apps_container_launch_on_boarding.cpp
|
||||
apps_launch_default_src += apps/apps_container_launch_default.cpp
|
||||
apps_prompt_none_src += apps/apps_container_prompt_none.cpp
|
||||
apps_prompt_beta_src += apps/apps_container_prompt_beta.cpp
|
||||
apps_prompt_update_src += apps/apps_container_prompt_update.cpp
|
||||
|
||||
snapshots_declaration = $(foreach i,$(apps),$(i)::Snapshot m_snapshot$(subst :,,$(i))Snapshot;)
|
||||
apps_declaration = $(foreach i,$(apps),$(i) m_$(subst :,,$(i));)
|
||||
@@ -89,28 +89,11 @@ $(BUILD_DIR)/apps/i18n.h: $(BUILD_DIR)/apps/i18n.cpp
|
||||
|
||||
$(eval $(call depends_on_image,apps/title_bar_view.cpp,apps/exam_icon.png))
|
||||
|
||||
all_app_src = $(app_src)(apps_launch_on_boarding_src) $(apps_launch_default_src) $(apps_prompt_none_src) $(apps_prompt_update_src) $(apps_prompt_beta_src) $(apps_official) $(apps_non_official) $(tests_src)
|
||||
|
||||
$(call object_for,$(all_app_src)): $(BUILD_DIR)/apps/i18n.h
|
||||
$(call object_for,$(all_app_src)): $(BUILD_DIR)/python/port/genhdr/qstrdefs.generated.h
|
||||
$(call object_for,$(apps_src) $(tests_src)): $(BUILD_DIR)/apps/i18n.h
|
||||
$(call object_for,$(apps_src) $(tests_src)): $(BUILD_DIR)/python/port/genhdr/qstrdefs.generated.h
|
||||
|
||||
apps_tests_src = $(app_calculation_test_src) $(app_code_test_src) $(app_probability_test_src) $(app_regression_test_src) $(app_sequence_test_src) $(app_shared_test_src) $(app_statistics_test_src) $(app_settings_test_src) $(app_solver_test_src)
|
||||
|
||||
apps_tests_src += $(addprefix apps/,\
|
||||
global_preferences.cpp \
|
||||
)
|
||||
|
||||
# Configure variants
|
||||
apps_all_src = $(app_src)
|
||||
apps_all_src += $(apps_official) $(apps_non_official)
|
||||
apps_all_src += $(apps_launch_default_src) $(apps_launch_on_boarding_src)
|
||||
apps_all_src += $(apps_prompt_none_src) $(apps_prompt_update_src) $(apps_prompt_beta_src)
|
||||
|
||||
apps_default_src = $(app_src) $(apps_non_official) $(apps_launch_default_src) $(apps_prompt_none_src)
|
||||
apps_official_default_src = $(app_src) $(apps_official) $(apps_launch_default_src) $(apps_prompt_none_src)
|
||||
apps_onboarding_src = $(app_src) $(apps_non_official) $(apps_launch_on_boarding_src) $(apps_prompt_none_src)
|
||||
apps_official_onboarding_src = $(app_src) $(apps_official) $(apps_launch_on_boarding_src) $(apps_prompt_none_src)
|
||||
apps_onboarding_update_src = $(app_src) $(apps_non_official) $(apps_launch_on_boarding_src) $(apps_prompt_update_src)
|
||||
apps_official_onboarding_update_src = $(app_src) $(apps_official) $(apps_launch_on_boarding_src) $(apps_prompt_update_src)
|
||||
apps_onboarding_beta_src = $(app_src) $(apps_non_official) $(apps_launch_on_boarding_src) $(apps_prompt_beta_src)
|
||||
apps_official_onboarding_beta_src = $(app_src) $(apps_official) $(apps_launch_on_boarding_src) $(apps_prompt_beta_src)
|
||||
|
||||
@@ -30,7 +30,7 @@ app_calculation_src = $(addprefix apps/calculation/,\
|
||||
)
|
||||
|
||||
app_calculation_src += $(app_calculation_test_src)
|
||||
app_src += $(app_calculation_src)
|
||||
apps_src += $(app_calculation_src)
|
||||
|
||||
i18n_files += $(addprefix apps/calculation/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -27,7 +27,7 @@ app_code_src = $(addprefix apps/code/,\
|
||||
)
|
||||
|
||||
app_code_src += $(app_code_test_src)
|
||||
app_src += $(app_code_src)
|
||||
apps_src += $(app_code_src)
|
||||
|
||||
i18n_files += $(addprefix apps/code/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -31,7 +31,7 @@ app_graph_src = $(addprefix apps/graph/,\
|
||||
values/values_controller.cpp \
|
||||
)
|
||||
|
||||
app_src += $(app_graph_src)
|
||||
apps_src += $(app_graph_src)
|
||||
|
||||
i18n_files += $(addprefix apps/graph/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -16,4 +16,4 @@ app_hardware_test_src = $(addprefix apps/hardware_test/,\
|
||||
vblank_test_controller.cpp \
|
||||
)
|
||||
|
||||
app_src += $(app_hardware_test_src)
|
||||
apps_src += $(app_hardware_test_src)
|
||||
|
||||
@@ -4,7 +4,7 @@ app_home_src = $(addprefix apps/home/,\
|
||||
controller.cpp \
|
||||
)
|
||||
|
||||
app_src += $(app_home_src)
|
||||
apps_src += $(app_home_src)
|
||||
|
||||
i18n_files += $(addprefix apps/home/,\
|
||||
base.de.i18n \
|
||||
|
||||
@@ -7,7 +7,7 @@ app_on_boarding_src = $(addprefix apps/on_boarding/,\
|
||||
power_on_self_test.cpp \
|
||||
)
|
||||
|
||||
app_src += $(app_on_boarding_src)
|
||||
apps_src += $(app_on_boarding_src)
|
||||
|
||||
i18n_files += $(addprefix apps/on_boarding/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -38,7 +38,7 @@ app_probability_src = $(addprefix apps/probability/,\
|
||||
)
|
||||
|
||||
app_probability_src += $(app_probability_test_src)
|
||||
app_src += $(app_probability_src)
|
||||
apps_src += $(app_probability_src)
|
||||
|
||||
i18n_files += $(addprefix apps/probability/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -37,7 +37,7 @@ app_regression_src = $(addprefix apps/regression/,\
|
||||
)
|
||||
|
||||
app_regression_src += $(app_regression_test_src)
|
||||
app_src += $(app_regression_src)
|
||||
apps_src += $(app_regression_src)
|
||||
|
||||
i18n_files += $(addprefix apps/regression/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -26,7 +26,7 @@ app_sequence_src = $(addprefix apps/sequence/,\
|
||||
)
|
||||
|
||||
app_sequence_src += $(app_sequence_test_src)
|
||||
app_src += $(app_sequence_src)
|
||||
apps_src += $(app_sequence_src)
|
||||
|
||||
i18n_files += $(addprefix apps/sequence/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -5,7 +5,15 @@ app_settings_src = $(addprefix apps/settings/,\
|
||||
app.cpp \
|
||||
cell_with_separator.cpp \
|
||||
main_controller.cpp \
|
||||
main_controller_prompt_beta.cpp:+beta \
|
||||
main_controller_prompt_none.cpp:-beta \
|
||||
main_controller_prompt_none.cpp:-update \
|
||||
main_controller_prompt_update.cpp:+update \
|
||||
sub_menu/about_controller.cpp \
|
||||
sub_menu/about_controller_official.cpp:+official \
|
||||
sub_menu/about_controller_non_official.cpp:-official \
|
||||
sub_menu/exam_mode_controller_official.cpp:+official \
|
||||
sub_menu/exam_mode_controller_non_official.cpp:-official \
|
||||
sub_menu/display_mode_controller.cpp \
|
||||
sub_menu/exam_mode_controller.cpp \
|
||||
sub_menu/generic_sub_controller.cpp \
|
||||
@@ -15,24 +23,7 @@ app_settings_src = $(addprefix apps/settings/,\
|
||||
)
|
||||
|
||||
app_settings_src += $(app_settings_test_src)
|
||||
app_src += $(app_settings_src)
|
||||
|
||||
apps_prompt_none_src += apps/settings/main_controller_prompt_none.cpp
|
||||
apps_prompt_beta_src += apps/settings/main_controller_prompt_beta.cpp
|
||||
apps_prompt_update_src += apps/settings/main_controller_prompt_update.cpp
|
||||
|
||||
apps_settings_official += $(addprefix apps/settings/,\
|
||||
sub_menu/about_controller_official.cpp \
|
||||
sub_menu/exam_mode_controller_official.cpp \
|
||||
)
|
||||
|
||||
apps_settings_non_official += $(addprefix apps/settings/,\
|
||||
sub_menu/about_controller_non_official.cpp \
|
||||
sub_menu/exam_mode_controller_non_official.cpp \
|
||||
)
|
||||
|
||||
apps_official += $(apps_settings_official)
|
||||
apps_non_official += $(apps_settings_non_official)
|
||||
apps_src += $(app_settings_src)
|
||||
|
||||
i18n_files += $(addprefix apps/settings/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -84,4 +84,4 @@ app_shared_src = $(addprefix apps/shared/,\
|
||||
)
|
||||
|
||||
app_shared_src += $(app_shared_test_src)
|
||||
app_src += $(app_shared_src)
|
||||
apps_src += $(app_shared_src)
|
||||
|
||||
@@ -16,7 +16,7 @@ app_solver_src = $(addprefix apps/solver/,\
|
||||
)
|
||||
|
||||
app_solver_src += $(app_solver_test_src)
|
||||
app_src += $(app_solver_src)
|
||||
apps_src += $(app_solver_src)
|
||||
|
||||
i18n_files += $(addprefix apps/solver/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -27,7 +27,7 @@ app_statistics_src = $(addprefix apps/statistics/,\
|
||||
)
|
||||
|
||||
app_statistics_src += $(app_statistics_test_src)
|
||||
app_src += $(app_statistics_src)
|
||||
apps_src += $(app_statistics_src)
|
||||
|
||||
i18n_files += $(addprefix apps/statistics/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -3,7 +3,7 @@ app_usb_src = $(addprefix apps/usb/,\
|
||||
usb_connected_controller.cpp \
|
||||
)
|
||||
|
||||
app_src += $(app_usb_src)
|
||||
apps_src += $(app_usb_src)
|
||||
|
||||
i18n_files += $(addprefix apps/usb/,\
|
||||
base.de.i18n\
|
||||
|
||||
@@ -3,22 +3,9 @@
|
||||
PLATFORM ?= device
|
||||
DEBUG ?= 0
|
||||
|
||||
include build/defaults.mak
|
||||
include build/platform.$(PLATFORM).mak
|
||||
|
||||
EPSILON_VERSION ?= 13.0.0
|
||||
EPSILON_APPS ?= calculation graph code statistics probability solver sequence regression settings
|
||||
EPSILON_I18N ?= en fr es de pt
|
||||
EPSILON_GETOPT ?= 0
|
||||
EPSILON_TELEMETRY ?= 0
|
||||
ESCHER_LOG_EVENTS_BINARY ?= 0
|
||||
|
||||
ifndef USE_LIBA
|
||||
$(error platform.mak should define USE_LIBA)
|
||||
endif
|
||||
include build/toolchain.$(TOOLCHAIN).mak
|
||||
|
||||
SFLAGS += -DDEBUG=$(DEBUG)
|
||||
SFLAGS += -DEPSILON_GETOPT=$(EPSILON_GETOPT)
|
||||
SFLAGS += -DEPSILON_TELEMETRY=$(EPSILON_TELEMETRY)
|
||||
SFLAGS += -DESCHER_LOG_EVENTS_BINARY=$(ESCHER_LOG_EVENTS_BINARY)
|
||||
|
||||
@@ -2,6 +2,11 @@ HOSTCC = gcc
|
||||
HOSTCXX = g++
|
||||
PYTHON = python3
|
||||
|
||||
SFLAGS += -DDEBUG=$(DEBUG)
|
||||
SFLAGS += -DEPSILON_GETOPT=$(EPSILON_GETOPT)
|
||||
SFLAGS += -DEPSILON_TELEMETRY=$(EPSILON_TELEMETRY)
|
||||
SFLAGS += -DESCHER_LOG_EVENTS_BINARY=$(ESCHER_LOG_EVENTS_BINARY)
|
||||
|
||||
# Language-specific flags
|
||||
CFLAGS = -std=c99
|
||||
CXXFLAGS = -std=c++11 -fno-exceptions -fno-rtti -fno-threadsafe-statics
|
||||
|
||||
36
build/helpers.mk
Normal file
36
build/helpers.mk
Normal file
@@ -0,0 +1,36 @@
|
||||
# Define a standard rule helper
|
||||
# If passed a last parameter value of with_local_version, we also define an
|
||||
# extra rule that can build source files within the $(BUILD_DIR). This is useful
|
||||
# for rules that can be applied for intermediate objects (for example, when
|
||||
# going .png -> .cpp -> .o).
|
||||
|
||||
define rule_label
|
||||
@ echo "$(shell printf "%-8s" $(strip $(1)))$(@:$(BUILD_DIR)/%=%)"
|
||||
endef
|
||||
|
||||
define rule_for
|
||||
ifeq ($(strip $(5)),with_local_version)
|
||||
$(addprefix $$(BUILD_DIR)/,$(strip $(2))): $(addprefix $$(BUILD_DIR)/,$(strip $(3)))
|
||||
@ echo "$(shell printf "%-8s" $(strip $(1)))$$(@:$$(BUILD_DIR)/%=%)"
|
||||
$(Q) $(4)
|
||||
endif
|
||||
$(addprefix $$(BUILD_DIR)/,$(strip $(2))): $(strip $(3)) | $$$$(@D)/.
|
||||
@ echo "$(shell printf "%-8s" $(strip $(1)))$$(@:$$(BUILD_DIR)/%=%)"
|
||||
$(Q) $(4)
|
||||
endef
|
||||
|
||||
# Helper functions to work with variants
|
||||
|
||||
define direct_object_for
|
||||
$(addprefix $(BUILD_DIR)/,$(addsuffix .o,$(basename $(1))))
|
||||
endef
|
||||
|
||||
# Objects for source files in $(1) matching flavor $(2). A flavor is a dot
|
||||
# separated list of variants (e.g. large.speed).
|
||||
define flavored_object_for
|
||||
$(call direct_object_for,$(call filter_variants,$(1),$(sort $(subst ., ,$(2)))))
|
||||
endef
|
||||
|
||||
define object_for
|
||||
$(call direct_object_for,$(call any_variant,$(1)))
|
||||
endef
|
||||
@@ -1,16 +1,5 @@
|
||||
# Define standard compilation rules
|
||||
|
||||
.PHONY: official_authorization
|
||||
ifeq ($(ACCEPT_OFFICIAL_TOS),1)
|
||||
official_authorization:
|
||||
else
|
||||
official_authorization:
|
||||
@echo "CAUTION: You are trying to build an official NumWorks firmware."
|
||||
@echo "Distribution of such firmware by a third party is prohibited."
|
||||
@echo "Please set the ACCEPT_OFFICIAL_TOS environment variable to proceed."
|
||||
@exit -1
|
||||
endif
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
AS, %.o, %.s, \
|
||||
$$(CC) $$(SFLAGS) -c $$< -o $$@ \
|
||||
@@ -22,12 +11,34 @@ $(eval $(call rule_for, \
|
||||
with_local_version \
|
||||
))
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
CPP, %, %.inc, \
|
||||
$$(CPP) -P $$< $$@ \
|
||||
))
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
CXX, %.o, %.cpp, \
|
||||
$$(CXX) $$(CXXFLAGS) $$(SFLAGS) -c $$< -o $$@, \
|
||||
with_local_version \
|
||||
))
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
DFUSE, %.dfu, %.elf, \
|
||||
$$(PYTHON) build/device/elf2dfu.py $$< $$@, \
|
||||
with_local_version \
|
||||
))
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
OBJCOPY, %.hex, %.elf, \
|
||||
$$(OBJCOPY) -O ihex $$< $$@ \
|
||||
))
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
OBJCOPY, %.bin, %.elf, \
|
||||
$$(OBJCOPY) -O binary $$< $$@, \
|
||||
with_local_version \
|
||||
))
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
OCC, %.o, %.m, \
|
||||
$$(CC) $$(CFLAGS) $$(SFLAGS) -c $$< -o $$@ \
|
||||
@@ -39,8 +50,8 @@ $(eval $(call rule_for, \
|
||||
))
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
CPP, %, %.inc, \
|
||||
$$(CPP) -P $$< $$@ \
|
||||
WINDRES, %.o, %.rc, \
|
||||
$$(WINDRES) $$< -O coff -o $$@ \
|
||||
))
|
||||
|
||||
ifdef EXE
|
||||
@@ -61,8 +72,3 @@ $(eval $(call rule_for, \
|
||||
))
|
||||
endif
|
||||
endif
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
WINDRES, %.o, %.rc, \
|
||||
$$(WINDRES) $$< -O coff -o $$@ \
|
||||
))
|
||||
|
||||
@@ -3,23 +3,6 @@ include build/targets.device.$(MODEL).mak
|
||||
HANDY_TARGETS += flasher.light flasher.verbose bench.ram bench.flash
|
||||
HANDY_TARGETS_EXTENSIONS += dfu hex bin
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
DFUSE, %.dfu, %.$$(EXE), \
|
||||
$$(PYTHON) build/device/elf2dfu.py $$< $$@, \
|
||||
with_local_version \
|
||||
))
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
OBJCOPY, %.hex, %.$$(EXE), \
|
||||
$$(OBJCOPY) -O ihex $$< $$@ \
|
||||
))
|
||||
|
||||
$(eval $(call rule_for, \
|
||||
OBJCOPY, %.bin, %.$$(EXE), \
|
||||
$$(OBJCOPY) -O binary $$< $$@, \
|
||||
with_local_version \
|
||||
))
|
||||
|
||||
.PHONY: %_size
|
||||
%_size: $(BUILD_DIR)/%.$(EXE)
|
||||
@echo "========= BUILD OUTPUT ========"
|
||||
@@ -47,16 +30,16 @@ openocd:
|
||||
|
||||
# The flasher target is defined here because otherwise $(%_src) has not been
|
||||
# fully filled
|
||||
flasher_src = $(ion_src) $(ion_device_flasher_src) $(liba_src) $(kandinsky_src)
|
||||
$(BUILD_DIR)/flasher.light.$(EXE): $(call flavored_object_for,$(flasher_src),light usbxip)
|
||||
$(BUILD_DIR)/flasher.verbose.$(EXE): $(call flavored_object_for,$(flasher_src),usbxip)
|
||||
$(BUILD_DIR)/flasher.%.$(EXE): LDFLAGS += -Lion/src/$(PLATFORM)/flasher
|
||||
$(BUILD_DIR)/flasher.%.$(EXE): LDSCRIPT = ion/src/$(PLATFORM)/shared/ram.ld
|
||||
flasher_base_src = $(ion_xip_src) $(liba_src) $(kandinsky_src)
|
||||
$(BUILD_DIR)/flasher.light.$(EXE): $(call object_for,$(flasher_base_src) $(ion_target_device_flasher_light_src))
|
||||
$(BUILD_DIR)/flasher.verbose.$(EXE): $(call object_for,$(flasher_base_src) $(ion_target_device_flasher_verbose_src))
|
||||
|
||||
#TODO Do not build all apps... Put elsewhere?
|
||||
bench_src = $(ion_src) $(liba_src) $(kandinsky_src) $(poincare_src) $(libaxx_src) $(app_shared_src) $(ion_device_bench_src)
|
||||
$(BUILD_DIR)/bench.ram.$(EXE): $(call flavored_object_for,$(bench_src),consoleuart usbxip)
|
||||
$(BUILD_DIR)/bench.ram.$(EXE): LDFLAGS += -Lion/src/$(PLATFORM)/bench
|
||||
$(BUILD_DIR)/bench.ram.$(EXE): LDSCRIPT = ion/src/$(PLATFORM)/shared/ram.ld
|
||||
$(BUILD_DIR)/bench.flash.$(EXE): $(call flavored_object_for,$(bench_src),consoleuart usbxip)
|
||||
$(BUILD_DIR)/bench.flash.$(EXE): LDSCRIPT = ion/src/$(PLATFORM)/$(MODEL)/internal_flash.ld
|
||||
bench_src = $(ion_xip_src) $(liba_src) $(kandinsky_src) $(poincare_src) $(libaxx_src) $(app_shared_src) $(ion_target_device_bench_src)
|
||||
$(BUILD_DIR)/bench.ram.$(EXE): $(call object_for,$(bench_src))
|
||||
$(BUILD_DIR)/bench.flash.$(EXE): $(call object_for,$(bench_src))
|
||||
|
||||
@@ -1,28 +1,8 @@
|
||||
# Define standard Epsilon targets
|
||||
base_src = $(liba_src) $(kandinsky_src) $(escher_src) $(libaxx_src) $(poincare_src) $(python_src)
|
||||
|
||||
epsilon_src = $(base_src) $(ion_default_src) $(apps_default_src)
|
||||
epsilon_official_src = $(base_src) $(ion_default_src) $(apps_official_default_src)
|
||||
|
||||
$(BUILD_DIR)/epsilon.$(EXE): $(call object_for,$(epsilon_src))
|
||||
$(BUILD_DIR)/epsilon.official.$(EXE): $(call object_for,$(epsilon_official_src))
|
||||
$(BUILD_DIR)/epsilon.onboarding.$(EXE): $(call object_for, $(base_src) $(ion_default_src) $(apps_onboarding_src))
|
||||
$(BUILD_DIR)/epsilon.official.onboarding.$(EXE): $(call object_for,$(base_src) $(ion_default_src) $(apps_official_onboarding_src))
|
||||
$(BUILD_DIR)/epsilon.onboarding.update.$(EXE): $(call object_for, $(base_src) $(ion_default_src) $(apps_onboarding_update_src))
|
||||
$(BUILD_DIR)/epsilon.official.onboarding.update.$(EXE): $(call object_for,$(base_src) $(ion_default_src) $(apps_official_onboarding_update_src))
|
||||
$(BUILD_DIR)/epsilon.onboarding.beta.$(EXE): $(call object_for, $(base_src) $(ion_default_src) $(apps_onboarding_beta_src))
|
||||
$(BUILD_DIR)/epsilon.official.onboarding.beta.$(EXE): $(call object_for,$(base_src) $(ion_default_src) $(apps_official_onboarding_beta_src))
|
||||
|
||||
test_base_src = $(base_src) $(apps_tests_src) $(runner_src) $(tests_src)
|
||||
|
||||
test_runner_src = $(test_base_src) $(ion_console_on_screen_src)
|
||||
$(BUILD_DIR)/test.$(EXE): $(call object_for,$(test_runner_src))
|
||||
|
||||
# Define handy targets
|
||||
# Those can be built easily by simply invoking "make target.ext". The named file
|
||||
# will be built in $(BUILD_DIR).
|
||||
|
||||
HANDY_TARGETS += epsilon epsilon.official epsilon.onboarding epsilon.official.onboarding epsilon.onboarding.update epsilon.official.onboarding.update epsilon.onboarding.beta epsilon.official.onboarding.beta test
|
||||
HANDY_TARGETS +=
|
||||
HANDY_TARGETS_EXTENSIONS += $(EXE)
|
||||
|
||||
define handy_target_rule
|
||||
@@ -30,10 +10,70 @@ define handy_target_rule
|
||||
$(1).$(2): $$(BUILD_DIR)/$(1).$(2)
|
||||
endef
|
||||
|
||||
# Epsilon base target
|
||||
|
||||
base_src = $(ion_src) $(liba_src) $(kandinsky_src) $(escher_src) $(libaxx_src) $(poincare_src) $(python_src)
|
||||
|
||||
epsilon_src = $(base_src) $(apps_src)
|
||||
|
||||
$(BUILD_DIR)/epsilon.$(EXE): $(call flavored_object_for,$(epsilon_src))
|
||||
|
||||
HANDY_TARGETS += epsilon
|
||||
|
||||
# Epsilon flavored targets
|
||||
|
||||
epsilon_flavors = \
|
||||
onboarding \
|
||||
onboarding.update \
|
||||
onboarding.beta
|
||||
|
||||
define rule_for_epsilon_flavor
|
||||
$$(BUILD_DIR)/epsilon.$(1).$$(EXE): $$(call flavored_object_for,$$(epsilon_src),$(1))
|
||||
endef
|
||||
|
||||
$(foreach flavor,$(epsilon_flavors),$(eval $(call rule_for_epsilon_flavor,$(flavor))))
|
||||
|
||||
HANDY_TARGETS += $(foreach flavor,$(epsilon_flavors),epsilon.$(flavor))
|
||||
|
||||
# Epsilon official targets
|
||||
|
||||
epsilon_official_flavors = \
|
||||
official \
|
||||
official.onboarding \
|
||||
official.onboarding.update \
|
||||
official.onboarding.beta
|
||||
|
||||
define rule_for_unconfirmed_official_flavor
|
||||
$$(BUILD_DIR)/epsilon.$(1).$$(EXE):
|
||||
@echo "CAUTION: You are trying to build an official NumWorks firmware."
|
||||
@echo "Distribution of such firmware by a third party is prohibited."
|
||||
@echo "Please set the ACCEPT_OFFICIAL_TOS environment variable to proceed."
|
||||
@exit -1
|
||||
endef
|
||||
|
||||
ifeq ($(ACCEPT_OFFICIAL_TOS),1)
|
||||
rule_for_official_epsilon_flavor = rule_for_epsilon_flavor
|
||||
else
|
||||
rule_for_official_epsilon_flavor = rule_for_unconfirmed_official_flavor
|
||||
endif
|
||||
|
||||
$(foreach flavor,$(epsilon_official_flavors),$(eval $(call $(rule_for_official_epsilon_flavor),$(flavor))))
|
||||
|
||||
HANDY_TARGETS += $(foreach flavor,$(epsilon_official_flavors),epsilon.$(flavor))
|
||||
|
||||
# Test
|
||||
|
||||
test_runner_src = $(base_src) $(apps_tests_src) $(runner_src) $(tests_src)
|
||||
|
||||
$(BUILD_DIR)/test.$(EXE): $(call flavored_object_for,$(test_runner_src),consoledisplay)
|
||||
|
||||
HANDY_TARGETS += test
|
||||
|
||||
# Load platform-specific targets
|
||||
# We include them before the standard ones to give them precedence.
|
||||
-include build/targets.$(PLATFORM).mak
|
||||
|
||||
# Generate handy targets rules
|
||||
$(foreach extension,$(HANDY_TARGETS_EXTENSIONS),$(foreach executable,$(HANDY_TARGETS),$(eval $(call handy_target_rule,$(executable),$(extension)))))
|
||||
|
||||
include build/targets.all.mak
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Headless targets
|
||||
epsilon_headless_src = $(base_src) $(ion_headless_src) $(apps_default_src)
|
||||
$(BUILD_DIR)/epsilon.headless.$(EXE): $(call object_for,$(epsilon_headless_src))
|
||||
$(eval $(call rule_for_epsilon_flavor,headless))
|
||||
|
||||
test_runner_headless_src = $(test_base_src) $(ion_headless_src)
|
||||
$(BUILD_DIR)/test.headless.$(EXE): $(call object_for,$(test_runner_headless_src))
|
||||
HANDY_TARGETS += epsilon.headless
|
||||
|
||||
HANDY_TARGETS += epsilon.headless test.headless
|
||||
$(BUILD_DIR)/test.headless.$(EXE): $(call flavored_object_for,$(test_runner_src),headless)
|
||||
|
||||
HANDY_TARGETS += test.headless
|
||||
|
||||
-include build/targets.simulator.$(TARGET).mak
|
||||
|
||||
63
build/variants.mak
Normal file
63
build/variants.mak
Normal file
@@ -0,0 +1,63 @@
|
||||
# Helper functions to work with variants
|
||||
# Make variants_test for an example
|
||||
|
||||
define available_variants_in
|
||||
$(sort $(patsubst +%,%,$(filter +%,$(subst :, ,$(1)))))
|
||||
endef
|
||||
|
||||
define without_any_variant_specifier
|
||||
$(filter-out $(foreach variant,$(call available_variants_in,$(1)),%:-$(variant) %:+$(variant)),$(1))
|
||||
endef
|
||||
|
||||
define with_variant_specifier_matching
|
||||
$(foreach variant,$(3),$(patsubst %:$(1)$(variant),%,$(filter %:$(1)$(variant),$(2))))
|
||||
endef
|
||||
|
||||
define without_any_variant_specifier_matching
|
||||
$(filter-out \
|
||||
$(call with_variant_specifier_matching,$(1),$(2),$(3)), \
|
||||
$(foreach variant,$(call available_variants_in,$(2)),$(call with_variant_specifier_matching,$(1),$(2),$(variant))) \
|
||||
)
|
||||
endef
|
||||
|
||||
# Return files in $(1) that match the variant $(2)
|
||||
define filter_variants
|
||||
$(sort \
|
||||
$(call without_any_variant_specifier,$(1)) \
|
||||
$(call with_variant_specifier_matching,+,$(1),$(2)) \
|
||||
$(call without_any_variant_specifier_matching,-,$(1),$(2)) \
|
||||
)
|
||||
endef
|
||||
|
||||
# Return all files in $(1) no matter their variant
|
||||
define any_variant
|
||||
$(sort $(filter-out -%,$(filter-out +%,$(subst :, ,$(1)))))
|
||||
endef
|
||||
|
||||
# Examples
|
||||
|
||||
variants_test_src = base.cpp
|
||||
variants_test_src += color/green.cpp:+green
|
||||
variants_test_src += color/red.cpp:+red
|
||||
variants_test_src += color/blue.cpp:-red
|
||||
variants_test_src += color/blue.cpp:-green
|
||||
variants_test_src += engine/fast.cpp:+nitro
|
||||
variants_test_src += engine/slow.cpp:-nitro
|
||||
|
||||
.PHONY: variants_test
|
||||
variants_test:
|
||||
$(info AVAILABLE_VARIANTS_IN)
|
||||
$(info --result: $(call available_variants_in,$(variants_test_src),))
|
||||
$(info --expected: green nitro red)
|
||||
$(info FILTER_VARIANTS)
|
||||
$(info --result: $(call filter_variants,$(variants_test_src),))
|
||||
$(info --expected: base.cpp color/blue.cpp engine/slow.cpp)
|
||||
$(info FILTER_VARIANTS red)
|
||||
$(info --result: $(call filter_variants,$(variants_test_src),red))
|
||||
$(info --expected: base.cpp color/red.cpp engine/slow.cpp)
|
||||
$(info FILTER_VARIANTS green speed)
|
||||
$(info --result: $(call filter_variants,$(variants_test_src),green nitro))
|
||||
$(info --expected: base.cpp color/green.cpp engine/fast.cpp)
|
||||
$(info ANY_VARIANT)
|
||||
$(info --result: $(call any_variant,$(variants_test_src)))
|
||||
$(info --expected: base.cpp color/blue.cpp color/green.cpp color/red.cpp engine/fast.cpp engine/slow.cpp)
|
||||
16
ion/Makefile
16
ion/Makefile
@@ -15,8 +15,6 @@ include ion/src/$(PLATFORM)/Makefile
|
||||
-include ion/test/$(PLATFORM)/Makefile
|
||||
include ion/src/shared/tools/Makefile
|
||||
|
||||
ion_console_display_src += ion/src/shared/console_display.cpp
|
||||
|
||||
# We need to work around a GCC bug (concerning versions < 5.1). It is valid in
|
||||
# C++11 to initialize a character array by providing a string litteral (e.g.
|
||||
# char test[4]= "ab"; is valid and should initialize test to 'a','b',0,0).
|
||||
@@ -25,10 +23,13 @@ initializer_list = $(shell echo $(1) | sed "s/\(.\)/'\1',/g")0
|
||||
$(call object_for,ion/src/shared/platform_info.cpp): SFLAGS += -DPATCH_LEVEL="$(call initializer_list,$(PATCH_LEVEL))" -DEPSILON_VERSION="$(call initializer_list,$(EPSILON_VERSION))"
|
||||
|
||||
ion_src += $(addprefix ion/src/shared/, \
|
||||
console_display.cpp:+consoledisplay \
|
||||
console_line.cpp \
|
||||
crc32_eat_byte.cpp \
|
||||
decompress.cpp \
|
||||
events.cpp \
|
||||
events_keyboard.cpp \
|
||||
events_modifier.cpp \
|
||||
platform_info.cpp \
|
||||
storage.cpp \
|
||||
unicode/utf8_decoder.cpp\
|
||||
@@ -49,14 +50,3 @@ tests_src += $(addprefix ion/test/,\
|
||||
ifdef ION_STORAGE_LOG
|
||||
SFLAGS += -DION_STORAGE_LOG=1
|
||||
endif
|
||||
|
||||
# Configure variants
|
||||
ion_all_src = $(ion_src)
|
||||
ion_all_src += $(ion_simulator_sdl_src) $(ion_simulator_headless_src)
|
||||
ion_all_src += $(ion_device_dfu_relocated_src) $(ion_device_dfu_xip_src)
|
||||
ion_all_src += $(ion_console_display_src) $(ion_console_stdio_src) $(ion_console_uart_src)
|
||||
|
||||
ion_default_src = $(ion_src) $(ion_simulator_sdl_src) $(ion_device_dfu_relocated_src) $(ion_console_stdio_src)
|
||||
ion_console_on_screen_src = $(ion_src) $(ion_simulator_sdl_src) $(ion_device_dfu_relocated_src) $(ion_console_display_src)
|
||||
ion_xip_src = $(ion_src) $(ion_simulator_sdl_src) $(ion_device_dfu_xip_src) $(ion_console_uart_src)
|
||||
ion_headless_src = $(ion_src) $(ion_simulator_headless_src) $(ion_device_dfu_relocated_src) $(ion_console_stdio_src)
|
||||
|
||||
@@ -6,22 +6,12 @@ include ion/src/device/$(MODEL)/Makefile
|
||||
|
||||
$(call object_for,ion/src/shared/platform_info.cpp): SFLAGS += -DHEADER_SECTION="__attribute__((section(\".header\")))"
|
||||
|
||||
ion_src += $(addprefix ion/src/shared/, \
|
||||
console_line.cpp \
|
||||
events_keyboard.cpp \
|
||||
events_modifier.cpp \
|
||||
)
|
||||
|
||||
ifeq ($(EPSILON_TELEMETRY),1)
|
||||
ion_src += ion/src/shared/telemetry_console.cpp
|
||||
endif
|
||||
|
||||
# If you need to benchmark execution, you can replace events_keyboard with
|
||||
# events_benchmark.
|
||||
# If you need to profile execution, you can replace events_keyboard with
|
||||
# events_replay.o and dummy/events_modifier.o
|
||||
|
||||
ION_DEVICE_SFLAGS = -Iion/src/device/$(MODEL) -Iion/src/device/shared
|
||||
|
||||
$(call object_for,$(sort $(ion_device_src) $(dfu_src) $(ion_target_device_flasher_light_src) $(ion_target_device_flasher_verbose_src) $(usb_src) $(ion_target_device_bench_src) $(ion_device_dfu_xip_src) $(ion_device_dfu_relocated_src) $(ion_console_uart_src))): SFLAGS += $(ION_DEVICE_SFLAGS)
|
||||
$(call object_for,$(ion_device_src) $(ion_device_flasher_src) $(ion_device_bench_src)): SFLAGS += $(ION_DEVICE_SFLAGS)
|
||||
|
||||
ion_src += $(ion_device_src)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
ion_target_device_bench_src += $(addprefix ion/src/device/bench/, \
|
||||
ion_device_bench_src += $(addprefix ion/src/device/bench/, \
|
||||
bench.cpp \
|
||||
command_handler.cpp \
|
||||
command_list.cpp \
|
||||
runner.cpp \
|
||||
)
|
||||
|
||||
ion_target_device_bench_src += $(addprefix ion/src/device/bench/command/, \
|
||||
ion_device_bench_src += $(addprefix ion/src/device/bench/command/, \
|
||||
adc.cpp \
|
||||
backlight.cpp \
|
||||
charge.cpp \
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
ion_target_device_flasher_light_src = $(addprefix ion/src/device/flasher/, \
|
||||
ion_device_flasher_src = $(addprefix ion/src/device/flasher/, \
|
||||
main.cpp \
|
||||
display_light.cpp \
|
||||
)
|
||||
|
||||
ion_target_device_flasher_verbose_src = $(addprefix ion/src/device/flasher/, \
|
||||
main.cpp \
|
||||
display_verbose.cpp \
|
||||
display_light.cpp:+light \
|
||||
display_verbose.cpp:-light \
|
||||
)
|
||||
|
||||
@@ -3,6 +3,8 @@ ion_device_src += $(addprefix ion/src/device/shared/drivers/, \
|
||||
battery.cpp \
|
||||
base64.cpp \
|
||||
board.cpp \
|
||||
console.cpp:+consoleuart \
|
||||
console_dummy.cpp:-consoleuart \
|
||||
crc32.cpp \
|
||||
display.cpp \
|
||||
events_keyboard_platform.cpp \
|
||||
@@ -21,7 +23,3 @@ ion_device_src += $(addprefix ion/src/device/shared/drivers/, \
|
||||
usb.cpp \
|
||||
wakeup.cpp \
|
||||
)
|
||||
|
||||
ion_console_uart_src = ion/src/device/shared/drivers/console.cpp
|
||||
ion_console_stdio_src += ion/src/device/shared/drivers/console_dummy.cpp
|
||||
ion_console_display_src += ion/src/device/shared/drivers/console_dummy.cpp
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
usb_src += $(addprefix ion/src/device/shared/usb/, \
|
||||
# USB code
|
||||
|
||||
ion_device_usb_src += $(addprefix ion/src/device/shared/usb/, \
|
||||
calculator.cpp \
|
||||
dfu_interface.cpp\
|
||||
)
|
||||
|
||||
usb_src += $(addprefix ion/src/device/shared/usb/stack/, \
|
||||
ion_device_usb_src += $(addprefix ion/src/device/shared/usb/stack/, \
|
||||
device.cpp\
|
||||
endpoint0.cpp \
|
||||
interface.cpp\
|
||||
@@ -12,7 +14,7 @@ usb_src += $(addprefix ion/src/device/shared/usb/stack/, \
|
||||
streamable.cpp\
|
||||
)
|
||||
|
||||
usb_src += $(addprefix ion/src/device/shared/usb/stack/descriptor/, \
|
||||
ion_device_usb_src += $(addprefix ion/src/device/shared/usb/stack/descriptor/, \
|
||||
bos_descriptor.cpp\
|
||||
configuration_descriptor.cpp \
|
||||
descriptor.cpp\
|
||||
@@ -29,22 +31,19 @@ usb_src += $(addprefix ion/src/device/shared/usb/stack/descriptor/, \
|
||||
webusb_platform_descriptor.cpp\
|
||||
)
|
||||
|
||||
# Sources required to execute DFU in place
|
||||
ion_device_dfu_xip_src += ion/src/device/shared/usb/dfu_xip.cpp
|
||||
ion_device_dfu_xip_src += $(usb_src)
|
||||
# DFU code
|
||||
|
||||
# Sources required to execute DFU in RAM
|
||||
dfu_src += liba/src/assert.c
|
||||
dfu_src += liba/src/strlen.c
|
||||
dfu_src += liba/src/strlcpy.c
|
||||
dfu_src += liba/src/memset.c
|
||||
dfu_src += liba/src/memcpy.c
|
||||
dfu_src += libaxx/src/cxxabi/pure_virtual.cpp
|
||||
dfu_src += ion/src/device/shared/usb/boot.cpp
|
||||
dfu_src += ion/src/device/$(MODEL)/drivers/board.cpp
|
||||
dfu_src += ion/src/device/$(MODEL)/drivers/cache.cpp
|
||||
dfu_src += ion/src/device/$(MODEL)/drivers/reset.cpp
|
||||
dfu_src += $(addprefix ion/src/device/shared/drivers/, \
|
||||
ion_device_dfu_src += liba/src/assert.c
|
||||
ion_device_dfu_src += liba/src/strlen.c
|
||||
ion_device_dfu_src += liba/src/strlcpy.c
|
||||
ion_device_dfu_src += liba/src/memset.c
|
||||
ion_device_dfu_src += liba/src/memcpy.c
|
||||
ion_device_dfu_src += libaxx/src/cxxabi/pure_virtual.cpp
|
||||
ion_device_dfu_src += ion/src/device/shared/usb/boot.cpp
|
||||
ion_device_dfu_src += ion/src/device/$(MODEL)/drivers/board.cpp
|
||||
ion_device_dfu_src += ion/src/device/$(MODEL)/drivers/cache.cpp
|
||||
ion_device_dfu_src += ion/src/device/$(MODEL)/drivers/reset.cpp
|
||||
ion_device_dfu_src += $(addprefix ion/src/device/shared/drivers/, \
|
||||
backlight.cpp \
|
||||
battery.cpp \
|
||||
base64.cpp \
|
||||
@@ -68,8 +67,14 @@ dfu_src += $(addprefix ion/src/device/shared/drivers/, \
|
||||
wakeup.cpp \
|
||||
)
|
||||
|
||||
# Sources required to execute DFU in place
|
||||
ion_device_src += ion/src/device/shared/usb/dfu_xip.cpp:+usbxip
|
||||
ion_device_src += $(addsuffix :+usbxip,$(ion_device_usb_src))
|
||||
|
||||
# Sources required to execute DFU in RAM
|
||||
|
||||
$(BUILD_DIR)/ion/src/device/shared/usb/dfu.elf: LDSCRIPT = ion/src/device/shared/usb/dfu.ld
|
||||
$(BUILD_DIR)/ion/src/device/shared/usb/dfu.elf: $(call object_for,$(usb_src) $(dfu_src))
|
||||
$(BUILD_DIR)/ion/src/device/shared/usb/dfu.elf: $(call object_for,$(ion_device_usb_src) $(ion_device_dfu_src))
|
||||
|
||||
# In order to link the dfu bootloader inside the epsilon firmware, we need to
|
||||
# turn the dfu binary (dfu.bin) into an elf object.
|
||||
@@ -83,5 +88,5 @@ $(BUILD_DIR)/ion/src/device/shared/usb/dfu.o: $(BUILD_DIR)/ion/src/device/shared
|
||||
$(call rule_label,OBJCOPY)
|
||||
$(Q) cd $(dir $<) ; $(OBJCOPY) -I binary -O elf32-littlearm -B arm --rename-section .data=.rodata.dfu_bootloader --redefine-sym _binary_dfu_bin_start=_dfu_bootloader_flash_start --redefine-sym _binary_dfu_bin_end=_dfu_bootloader_flash_end $(notdir $<) $(notdir $@)
|
||||
|
||||
ion_device_dfu_relocated_src += ion/src/device/shared/usb/dfu.cpp
|
||||
ion_device_dfu_relocated_src += ion/src/device/shared/usb/dfu_relocated.cpp
|
||||
ion_device_src += ion/src/device/shared/usb/dfu.cpp:-usbxip
|
||||
ion_device_src += ion/src/device/shared/usb/dfu_relocated.cpp:-usbxip
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
# TODO
|
||||
ion_src += $(addprefix ion/src/shared/, \
|
||||
crc32.cpp \
|
||||
events.cpp \
|
||||
events_keyboard.cpp \
|
||||
events_modifier.cpp \
|
||||
power.cpp \
|
||||
random.cpp \
|
||||
timing.cpp \
|
||||
@@ -18,24 +14,19 @@ ion_src += $(addprefix ion/src/shared/, \
|
||||
dummy/usb.cpp \
|
||||
)
|
||||
|
||||
ion_simulator_sdl_src += $(addprefix ion/src/simulator/shared/, \
|
||||
display.cpp \
|
||||
events_keyboard.cpp \
|
||||
ion_src += $(addprefix ion/src/simulator/shared/, \
|
||||
console_stdio.cpp:-consoledisplay \
|
||||
display.cpp:-headless \
|
||||
events_keyboard.cpp:-headless \
|
||||
events_stdin.cpp:+headless \
|
||||
framebuffer_base.cpp \
|
||||
keyboard_sdl.cpp \
|
||||
main_sdl.cpp \
|
||||
layout.cpp \
|
||||
framebuffer_png.cpp:+headless \
|
||||
keyboard_dummy.cpp:+headless \
|
||||
keyboard_sdl.cpp:-headless \
|
||||
layout.cpp:-headless \
|
||||
main_headless.cpp:+headless \
|
||||
main_sdl.cpp:-headless \
|
||||
)
|
||||
|
||||
ion_simulator_headless_src += $(addprefix ion/src/simulator/shared/, \
|
||||
events_stdin.cpp \
|
||||
framebuffer_base.cpp \
|
||||
framebuffer_png.cpp \
|
||||
keyboard_dummy.cpp \
|
||||
main_headless.cpp \
|
||||
)
|
||||
|
||||
ion_console_stdio_src = ion/src/simulator/shared/console_stdio.cpp
|
||||
|
||||
include ion/src/simulator/$(TARGET)/Makefile
|
||||
include ion/src/simulator/external/Makefile
|
||||
|
||||
Reference in New Issue
Block a user