mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
89 lines
1.9 KiB
Makefile
89 lines
1.9 KiB
Makefile
# Define standard compilation rules
|
|
|
|
$(eval $(call rule_for, \
|
|
AS, %.o, %.s, \
|
|
$$(CC) $$(SFLAGS) -c $$< -o $$@, \
|
|
global local \
|
|
))
|
|
|
|
$(eval $(call rule_for, \
|
|
CC, %.o, %.c, \
|
|
$$(CC) $$(CFLAGS) $$(SFLAGS) -c $$< -o $$@, \
|
|
global local \
|
|
))
|
|
|
|
$(eval $(call rule_for, \
|
|
CPP, %, %.inc, \
|
|
$$(CPP) $$(addprefix -I,$$(dir $$^)) -P $$< $$@, \
|
|
global \
|
|
))
|
|
|
|
$(eval $(call rule_for, \
|
|
CXX, %.o, %.cpp, \
|
|
$$(CXX) $$(CXXFLAGS) $$(SFLAGS) -c $$< -o $$@, \
|
|
global local \
|
|
))
|
|
|
|
$(eval $(call rule_for, \
|
|
DFUSE, %.dfu, %.elf, \
|
|
$$(PYTHON) build/device/elf2dfu.py $$< $$@, \
|
|
local \
|
|
))
|
|
|
|
$(eval $(call rule_for, \
|
|
OBJCOPY, %.hex, %.elf, \
|
|
$$(OBJCOPY) -R .slot_info -O ihex $$< $$@, \
|
|
local \
|
|
))
|
|
|
|
$(eval $(call rule_for, \
|
|
OBJCOPY, %.bin, %.elf, \
|
|
$$(OBJCOPY) -R .slot_info -O binary $$< $$@, \
|
|
local \
|
|
))
|
|
|
|
$(eval $(call rule_for, \
|
|
OCC, %.o, %.m, \
|
|
$$(CC) $$(CFLAGS) $$(SFLAGS) -c $$< -o $$@, \
|
|
global \
|
|
))
|
|
|
|
$(eval $(call rule_for, \
|
|
OCC, %.o, %.mm, \
|
|
$$(CXX) $$(CXXFLAGS) $$(SFLAGS) -c $$< -o $$@, \
|
|
global \
|
|
))
|
|
|
|
$(eval $(call rule_for, \
|
|
WINDRES, %.o, %.rc, \
|
|
$$(WINDRES) $$(WRFLAGS) $$< -O coff -o $$@, \
|
|
global \
|
|
))
|
|
|
|
$(eval $(call rule_for, \
|
|
ZIP, %.zip, , \
|
|
rm -rf $$(basename $$@) && mkdir -p $$(basename $$@) && cp $$^ $$(basename $$@) && zip -r -9 -j $$@ $$(basename $$@) > /dev/null && rm -rf $$(basename $$@), \
|
|
global \
|
|
))
|
|
|
|
ifdef EXE
|
|
ifeq ($(OS),Windows_NT)
|
|
# Work around command-line length limit
|
|
# On Msys2 the max command line is 32 000 characters. Our standard LD command
|
|
# can be longer than that because we have quite a lot of object files. To work
|
|
# around this issue, we write the object list in a "target.objs" file, and tell
|
|
# the linker to read its arguments from this file.
|
|
$(eval $(call rule_for, \
|
|
LD, %.$$(EXE), , \
|
|
echo $$^ > $$@.objs && $$(LD) @$$@.objs $$(LDFLAGS) -o $$@ && rm $$@.objs, \
|
|
global \
|
|
))
|
|
else
|
|
$(eval $(call rule_for, \
|
|
LD, %.$$(EXE), , \
|
|
$$(LD) $$^ $$(LDFLAGS) -o $$@, \
|
|
global \
|
|
))
|
|
endif
|
|
endif
|