488 lines
16 KiB
Makefile
488 lines
16 KiB
Makefile
|
|
# Includes from main Makefile
|
|
|
|
##############################################################################
|
|
# Input files
|
|
|
|
# ASM source files
|
|
ifneq ($(findstring -DPICO_NO_FLASH=0, $(DEFINE)),) # boot loader only if flash
|
|
ASRC += ../_boot2/boot2_w25q080_bin.S
|
|
endif
|
|
|
|
# ASM sdk
|
|
ASRC += ../_sdk/bit_ops_aeabi.S
|
|
ASRC += ../_sdk/crt0.S
|
|
ASRC += ../_sdk/divider.S
|
|
ASRC += ../_sdk/divider0.S
|
|
ASRC += ../_sdk/double_aeabi.S
|
|
ASRC += ../_sdk/double_v1_rom_shim.S
|
|
ASRC += ../_sdk/float_aeabi.S
|
|
ASRC += ../_sdk/float_v1_rom_shim.S
|
|
ASRC += ../_sdk/irq_handler_chain.S
|
|
ASRC += ../_sdk/mem_ops_aeabi.S
|
|
ASRC += ../_sdk/pico_int64_ops_aeabi.S
|
|
|
|
# ASM picovga
|
|
ASRC += ../_picovga/render/vga_atext.S
|
|
ASRC += ../_picovga/render/vga_attrib8.S
|
|
ASRC += ../_picovga/render/vga_color.S
|
|
ASRC += ../_picovga/render/vga_ctext.S
|
|
ASRC += ../_picovga/render/vga_dtext.S
|
|
ASRC += ../_picovga/render/vga_fastsprite.S
|
|
ASRC += ../_picovga/render/vga_ftext.S
|
|
ASRC += ../_picovga/render/vga_graph1.S
|
|
ASRC += ../_picovga/render/vga_graph2.S
|
|
ASRC += ../_picovga/render/vga_graph4.S
|
|
ASRC += ../_picovga/render/vga_graph8.S
|
|
ASRC += ../_picovga/render/vga_graph8mat.S
|
|
ASRC += ../_picovga/render/vga_graph8persp.S
|
|
ASRC += ../_picovga/render/vga_gtext.S
|
|
ASRC += ../_picovga/render/vga_level.S
|
|
ASRC += ../_picovga/render/vga_levelgrad.S
|
|
ASRC += ../_picovga/render/vga_mtext.S
|
|
ASRC += ../_picovga/render/vga_oscil.S
|
|
ASRC += ../_picovga/render/vga_oscline.S
|
|
ASRC += ../_picovga/render/vga_persp.S
|
|
ASRC += ../_picovga/render/vga_persp2.S
|
|
ASRC += ../_picovga/render/vga_plane2.S
|
|
ASRC += ../_picovga/render/vga_progress.S
|
|
ASRC += ../_picovga/render/vga_sprite.S
|
|
ASRC += ../_picovga/render/vga_tile.S
|
|
ASRC += ../_picovga/render/vga_tile2.S
|
|
ASRC += ../_picovga/render/vga_tilepersp.S
|
|
ASRC += ../_picovga/render/vga_tilepersp15.S
|
|
ASRC += ../_picovga/render/vga_tilepersp2.S
|
|
ASRC += ../_picovga/render/vga_tilepersp3.S
|
|
ASRC += ../_picovga/render/vga_tilepersp4.S
|
|
ASRC += ../_picovga/vga_blitkey.S
|
|
ASRC += ../_picovga/vga_render.S
|
|
|
|
# C sdk
|
|
CSRC += ../_sdk/adc.c
|
|
CSRC += ../_sdk/binary_info.c
|
|
CSRC += ../_sdk/bootrom.c
|
|
CSRC += ../_sdk/claim.c
|
|
CSRC += ../_sdk/clocks.c
|
|
CSRC += ../_sdk/critical_section.c
|
|
CSRC += ../_sdk/datetime.c
|
|
CSRC += ../_sdk/dma.c
|
|
CSRC += ../_sdk/double_init_rom.c
|
|
CSRC += ../_sdk/double_math.c
|
|
CSRC += ../_sdk/flash.c
|
|
CSRC += ../_sdk/float_init_rom.c
|
|
CSRC += ../_sdk/float_math.c
|
|
CSRC += ../_sdk/gpio.c
|
|
CSRC += ../_sdk/i2c.c
|
|
CSRC += ../_sdk/interp.c
|
|
CSRC += ../_sdk/irq.c
|
|
CSRC += ../_sdk/lock_core.c
|
|
CSRC += ../_sdk/mem_ops.c
|
|
CSRC += ../_sdk/multicore.c
|
|
CSRC += ../_sdk/mutex.c
|
|
CSRC += ../_sdk/pheap.c
|
|
CSRC += ../_sdk/pico_malloc.c
|
|
CSRC += ../_sdk/pio.c
|
|
CSRC += ../_sdk/platform.c
|
|
CSRC += ../_sdk/pll.c
|
|
CSRC += ../_sdk/printf.c
|
|
CSRC += ../_sdk/queue.c
|
|
CSRC += ../_sdk/rp2040_usb_device_enumeration.c
|
|
CSRC += ../_sdk/rtc.c
|
|
CSRC += ../_sdk/runtime.c
|
|
CSRC += ../_sdk/sem.c
|
|
CSRC += ../_sdk/spi.c
|
|
CSRC += ../_sdk/stdio.c
|
|
CSRC += ../_sdk/stdio_semihosting.c
|
|
CSRC += ../_sdk/stdio_uart.c
|
|
CSRC += ../_sdk/stdio_usb.c
|
|
CSRC += ../_sdk/stdio_usb_descriptors.c
|
|
CSRC += ../_sdk/stdlib.c
|
|
CSRC += ../_sdk/sync.c
|
|
CSRC += ../_sdk/time.c
|
|
CSRC += ../_sdk/timeout_helper.c
|
|
CSRC += ../_sdk/timer.c
|
|
CSRC += ../_sdk/uart.c
|
|
CSRC += ../_sdk/unique_id.c
|
|
CSRC += ../_sdk/vreg.c
|
|
CSRC += ../_sdk/watchdog.c
|
|
CSRC += ../_sdk/xosc.c
|
|
|
|
# C tinyusb
|
|
CSRC += ../_tinyusb/bsp/raspberry_pi_pico/board_raspberry_pi_pico.c
|
|
CSRC += ../_tinyusb/class/audio/audio_device.c
|
|
CSRC += ../_tinyusb/class/bth/bth_device.c
|
|
CSRC += ../_tinyusb/class/cdc/cdc_device.c
|
|
CSRC += ../_tinyusb/class/cdc/cdc_host.c
|
|
CSRC += ../_tinyusb/class/cdc/cdc_rndis_host.c
|
|
CSRC += ../_tinyusb/class/dfu/dfu_rt_device.c
|
|
CSRC += ../_tinyusb/class/hid/hid_device.c
|
|
CSRC += ../_tinyusb/class/hid/hid_host.c
|
|
CSRC += ../_tinyusb/class/midi/midi_device.c
|
|
CSRC += ../_tinyusb/class/msc/msc_device.c
|
|
CSRC += ../_tinyusb/class/msc/msc_host.c
|
|
CSRC += ../_tinyusb/class/net/net_device.c
|
|
CSRC += ../_tinyusb/class/usbtmc/usbtmc_device.c
|
|
CSRC += ../_tinyusb/class/vendor/vendor_device.c
|
|
CSRC += ../_tinyusb/class/vendor/vendor_host.c
|
|
CSRC += ../_tinyusb/common/tusb_fifo.c
|
|
CSRC += ../_tinyusb/device/usbd.c
|
|
CSRC += ../_tinyusb/device/usbd_control.c
|
|
CSRC += ../_tinyusb/host/ehci/ehci.c
|
|
CSRC += ../_tinyusb/host/ohci/ohci.c
|
|
CSRC += ../_tinyusb/host/hub.c
|
|
CSRC += ../_tinyusb/host/usbh.c
|
|
CSRC += ../_tinyusb/host/usbh_control.c
|
|
CSRC += ../_tinyusb/portable/raspberrypi/rp2040/dcd_rp2040.c
|
|
CSRC += ../_tinyusb/portable/raspberrypi/rp2040/hcd_rp2040.c
|
|
CSRC += ../_tinyusb/portable/raspberrypi/rp2040/rp2040_usb.c
|
|
CSRC += ../_tinyusb/tusb.c
|
|
|
|
# C picovga
|
|
SRC += ../_picovga/vga.cpp
|
|
SRC += ../_picovga/vga_layer.cpp
|
|
SRC += ../_picovga/vga_pal.cpp
|
|
SRC += ../_picovga/vga_screen.cpp
|
|
SRC += ../_picovga/vga_util.cpp
|
|
SRC += ../_picovga/vga_vmode.cpp
|
|
SRC += ../_picovga/util/canvas.cpp
|
|
SRC += ../_picovga/util/mat2d.cpp
|
|
SRC += ../_picovga/util/overclock.cpp
|
|
SRC += ../_picovga/util/print.cpp
|
|
SRC += ../_picovga/util/rand.cpp
|
|
SRC += ../_picovga/util/pwmsnd.cpp
|
|
SRC += ../_picovga/font/font_bold_8x8.cpp
|
|
SRC += ../_picovga/font/font_bold_8x14.cpp
|
|
SRC += ../_picovga/font/font_bold_8x16.cpp
|
|
SRC += ../_picovga/font/font_boldB_8x14.cpp
|
|
SRC += ../_picovga/font/font_boldB_8x16.cpp
|
|
SRC += ../_picovga/font/font_game_8x8.cpp
|
|
SRC += ../_picovga/font/font_ibm_8x8.cpp
|
|
SRC += ../_picovga/font/font_ibm_8x14.cpp
|
|
SRC += ../_picovga/font/font_ibm_8x16.cpp
|
|
SRC += ../_picovga/font/font_ibmtiny_8x8.cpp
|
|
SRC += ../_picovga/font/font_italic_8x8.cpp
|
|
SRC += ../_picovga/font/font_thin_8x8.cpp
|
|
|
|
# C++ sdk
|
|
SRC += ../_sdk/new_delete.cpp
|
|
|
|
# Includes
|
|
IPATH += -I./src
|
|
IPATH += -I../_sdk/include
|
|
IPATH += -I../_tinyusb
|
|
|
|
##############################################################################
|
|
# Configuration
|
|
|
|
# destination filename
|
|
TARGET = program
|
|
|
|
# stack size of one CPU core (should be 4KB to fit into SRAM banks 4 and 5)
|
|
STACK_SIZE = 0x1000
|
|
|
|
# temporary build directory
|
|
TEMP = ./build
|
|
|
|
# Base makefile (to ensure recompilation after change)
|
|
MAKEFILE = ./Makefile
|
|
|
|
# Base include file (to ensure recompilation after change)
|
|
INCLUDEFILE = ./src/include.h
|
|
|
|
# linker script
|
|
LDSCRIPT = ../memmap_default.ld
|
|
|
|
ifneq ($(findstring -DPICO_COPY_TO_RAM=1, $(DEFINE)),)
|
|
LDSCRIPT = ../memmap_copy_to_ram.ld
|
|
endif
|
|
|
|
ifneq ($(findstring -DPICO_NO_FLASH=1, $(DEFINE)),)
|
|
LDSCRIPT = ../memmap_no_flash.ld
|
|
endif
|
|
|
|
# -nostartfiles
|
|
|
|
# CPU Architecture
|
|
MARCH = armv6-m
|
|
|
|
# CPU
|
|
MCU = cortex-m0plus
|
|
|
|
##############################################################################
|
|
# Compilation flags
|
|
|
|
# define MCU
|
|
ARCHCFG = -march=${MARCH} -mcpu=${MCU} -mthumb
|
|
|
|
# === ASM flags
|
|
|
|
# MCU
|
|
AFLAGS = $(ARCHCFG)
|
|
|
|
# === C flags
|
|
|
|
# MCU
|
|
CFLAGS = $(ARCHCFG)
|
|
|
|
# Optimization level
|
|
#CFLAGS += -O0 # do no optimization
|
|
#CFLAGS += -O1 # optimize minimally
|
|
#CFLAGS += -O2 # optimize more
|
|
CFLAGS += -O3 # optimize even more
|
|
#CFLAGS += -Ofast # optimize for speed
|
|
#CFLAGS += -Og -g3 # optimize for debugger (use together with -g0..-g3, level of debugging information)
|
|
#CFLAGS += -Os # optimize for size
|
|
|
|
# create separate sections (to enable eliminate unused sections)
|
|
CFLAGS += -ffunction-sections -fdata-sections
|
|
|
|
# use unsigned char (this is default for ARM cpu)
|
|
CFLAGS += -funsigned-char
|
|
|
|
# generate debug informations
|
|
CFLAGS += -g3
|
|
|
|
# === C++ flags
|
|
|
|
CPPFLAGS = $(CFLAGS)
|
|
|
|
# do not use exceptions and unwind frames
|
|
CPPFLAGS += -fno-exceptions -fno-unwind-tables
|
|
CPPFLAGS += -fno-rtti -fno-use-cxa-atexit -std=gnu++17
|
|
|
|
# === Linker flags
|
|
|
|
# MCU
|
|
LDFLAGS = $(ARCHCFG)
|
|
|
|
# no built in
|
|
LDFLAGS += -Wl,--build-id=none
|
|
|
|
# libc without system functions
|
|
LDFLAGS += --specs=nosys.specs
|
|
|
|
# generate map file
|
|
LDFLAGS += -Wl,-Map=$(TARGET).map
|
|
|
|
# Linker script
|
|
LDFLAGS += -Wl,-script=$(LDSCRIPT)
|
|
|
|
# eliminate unused sections
|
|
LDFLAGS += -Wl,--gc-sections
|
|
|
|
# no start files if not flash
|
|
ifneq ($(findstring -DPICO_NO_FLASH=1, $(DEFINE)),)
|
|
LDFLAGS += -nostartfiles
|
|
endif
|
|
|
|
# wrap library functions
|
|
LDFLAGS+=-Wl,--wrap=sprintf -Wl,--wrap=snprintf -Wl,--wrap=vsnprintf
|
|
LDFLAGS+=-Wl,--wrap=__clzsi2 -Wl,--wrap=__clzdi2 -Wl,--wrap=__ctzsi2 -Wl,--wrap=__ctzdi2
|
|
LDFLAGS+=-Wl,--wrap=__popcountsi2 -Wl,--wrap=__popcountdi2
|
|
LDFLAGS+=-Wl,--wrap=__clz -Wl,--wrap=__clzl -Wl,--wrap=__clzll
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_idiv -Wl,--wrap=__aeabi_idivmod -Wl,--wrap=__aeabi_ldivmod
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_uidiv -Wl,--wrap=__aeabi_uidivmod -Wl,--wrap=__aeabi_uldivmod
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_dadd -Wl,--wrap=__aeabi_ddiv -Wl,--wrap=__aeabi_dmul -Wl,--wrap=__aeabi_drsub
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_dsub -Wl,--wrap=__aeabi_cdcmpeq -Wl,--wrap=__aeabi_cdrcmple
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_cdcmple -Wl,--wrap=__aeabi_dcmpeq -Wl,--wrap=__aeabi_dcmplt
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_dcmple -Wl,--wrap=__aeabi_dcmpge -Wl,--wrap=__aeabi_dcmpgt
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_dcmpun -Wl,--wrap=__aeabi_i2d -Wl,--wrap=__aeabi_l2d
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_ui2d -Wl,--wrap=__aeabi_ul2d -Wl,--wrap=__aeabi_d2iz
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_d2lz -Wl,--wrap=__aeabi_d2uiz -Wl,--wrap=__aeabi_d2ulz
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_d2f -Wl,--wrap=sqrt -Wl,--wrap=cos -Wl,--wrap=sin -Wl,--wrap=tan
|
|
LDFLAGS+=-Wl,--wrap=atan2 -Wl,--wrap=exp -Wl,--wrap=log -Wl,--wrap=ldexp -Wl,--wrap=copysign
|
|
LDFLAGS+=-Wl,--wrap=trunc -Wl,--wrap=floor -Wl,--wrap=ceil -Wl,--wrap=round -Wl,--wrap=sincos
|
|
LDFLAGS+=-Wl,--wrap=asin -Wl,--wrap=acos -Wl,--wrap=atan -Wl,--wrap=sinh -Wl,--wrap=cosh
|
|
LDFLAGS+=-Wl,--wrap=tanh -Wl,--wrap=asinh -Wl,--wrap=acosh -Wl,--wrap=atanh -Wl,--wrap=exp2
|
|
LDFLAGS+=-Wl,--wrap=log2 -Wl,--wrap=exp10 -Wl,--wrap=log10 -Wl,--wrap=pow -Wl,--wrap=powint
|
|
LDFLAGS+=-Wl,--wrap=hypot -Wl,--wrap=cbrt -Wl,--wrap=fmod -Wl,--wrap=drem -Wl,--wrap=remainder
|
|
LDFLAGS+=-Wl,--wrap=remquo -Wl,--wrap=expm1 -Wl,--wrap=log1p -Wl,--wrap=fma -Wl,--wrap=__aeabi_lmul
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_fadd -Wl,--wrap=__aeabi_fdiv -Wl,--wrap=__aeabi_fmul
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_frsub -Wl,--wrap=__aeabi_fsub -Wl,--wrap=__aeabi_cfcmpeq
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_cfrcmple -Wl,--wrap=__aeabi_cfcmple -Wl,--wrap=__aeabi_fcmpeq
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_fcmplt -Wl,--wrap=__aeabi_fcmple -Wl,--wrap=__aeabi_fcmpge
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_fcmpgt -Wl,--wrap=__aeabi_fcmpun -Wl,--wrap=__aeabi_i2f
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_l2f -Wl,--wrap=__aeabi_ui2f -Wl,--wrap=__aeabi_ul2f
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_f2iz -Wl,--wrap=__aeabi_f2lz -Wl,--wrap=__aeabi_f2uiz
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_f2ulz -Wl,--wrap=__aeabi_f2d -Wl,--wrap=sqrtf -Wl,--wrap=cosf
|
|
LDFLAGS+=-Wl,--wrap=sinf -Wl,--wrap=tanf -Wl,--wrap=atan2f -Wl,--wrap=expf -Wl,--wrap=logf
|
|
LDFLAGS+=-Wl,--wrap=ldexpf -Wl,--wrap=copysignf -Wl,--wrap=truncf -Wl,--wrap=floorf
|
|
LDFLAGS+=-Wl,--wrap=ceilf -Wl,--wrap=roundf -Wl,--wrap=sincosf -Wl,--wrap=asinf
|
|
LDFLAGS+=-Wl,--wrap=acosf -Wl,--wrap=atanf -Wl,--wrap=sinhf -Wl,--wrap=coshf -Wl,--wrap=tanhf
|
|
LDFLAGS+=-Wl,--wrap=asinhf -Wl,--wrap=acoshf -Wl,--wrap=atanhf -Wl,--wrap=exp2f -Wl,--wrap=log2f
|
|
LDFLAGS+=-Wl,--wrap=exp10f -Wl,--wrap=log10f -Wl,--wrap=powf -Wl,--wrap=powintf -Wl,--wrap=hypotf
|
|
LDFLAGS+=-Wl,--wrap=cbrtf -Wl,--wrap=fmodf -Wl,--wrap=dremf -Wl,--wrap=remainderf -Wl,--wrap=remquof
|
|
LDFLAGS+=-Wl,--wrap=expm1f -Wl,--wrap=log1pf -Wl,--wrap=fmaf -Wl,--wrap=malloc -Wl,--wrap=calloc
|
|
LDFLAGS+=-Wl,--wrap=free -Wl,--wrap=memcpy -Wl,--wrap=memset -Wl,--wrap=__aeabi_memcpy
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_memset -Wl,--wrap=__aeabi_memcpy4 -Wl,--wrap=__aeabi_memset4
|
|
LDFLAGS+=-Wl,--wrap=__aeabi_memcpy8 -Wl,--wrap=__aeabi_memset8 -Wl,--wrap=printf -Wl,--wrap=vprintf
|
|
LDFLAGS+=-Wl,--wrap=puts -Wl,--wrap=putchar
|
|
|
|
##############################################################################
|
|
# Compiler
|
|
|
|
# compiler base
|
|
COMP = arm-none-eabi-
|
|
|
|
# C compiler name
|
|
CC = ${COMP}gcc
|
|
|
|
# C++ compiler name
|
|
CPP = ${COMP}g++
|
|
|
|
# ASM compiler name
|
|
AS = ${COMP}gcc
|
|
|
|
# Linker
|
|
LD = ${COMP}g++
|
|
|
|
# Object dump
|
|
OD = ${COMP}objdump
|
|
|
|
# Object copy
|
|
OC = ${COMP}objcopy
|
|
|
|
# Names
|
|
NM = ${COMP}nm
|
|
|
|
# Size
|
|
SZ = ${COMP}size
|
|
|
|
# uf2
|
|
UF = ../_exe/elf2uf2.exe
|
|
|
|
##############################################################################
|
|
# File list
|
|
|
|
# list of all source files
|
|
ALLSRC = $(ASRC) $(CSRC) $(SRC)
|
|
|
|
# list of all files without directory and without extension
|
|
ALLBASE = $(notdir $(basename $(ALLSRC)))
|
|
|
|
# list of all object files *.o
|
|
ALLOBJ = $(addprefix $(TEMP)/, $(addsuffix .o, $(ALLBASE)))
|
|
|
|
##############################################################################
|
|
# Clear temporary directory (use "make clean")
|
|
|
|
clean:
|
|
@rm -rf $(TEMP)
|
|
@rm -f ./$(TARGET).bin ./$(TARGET).hex ./$(TARGET).lst ./$(TARGET).map ./$(TARGET).sym ./$(TARGET).siz ./$(TARGET).uf2
|
|
|
|
##############################################################################
|
|
# Compile all (use "make all")
|
|
|
|
all: createdirs elf bin hex lst sym siz uf2
|
|
|
|
##############################################################################
|
|
# Create temporary directory
|
|
|
|
createdirs:
|
|
@mkdir -p $(TEMP)
|
|
|
|
##############################################################################
|
|
# Dependencies of output files
|
|
|
|
elf: $(TEMP)/$(TARGET).elf
|
|
bin: ./$(TARGET).bin
|
|
hex: ./$(TARGET).hex
|
|
lst: ./$(TARGET).lst
|
|
sym: ./$(TARGET).sym
|
|
siz: ./$(TARGET).siz
|
|
uf2: ./$(TARGET).uf2
|
|
|
|
##############################################################################
|
|
# Create .bin file from .elf file
|
|
|
|
./$(TARGET).bin: $(TEMP)/$(TARGET).elf
|
|
@echo bin $@
|
|
@$(OC) -O binary $< $@
|
|
|
|
##############################################################################
|
|
# Create .hex file from .elf file
|
|
|
|
./$(TARGET).hex: $(TEMP)/$(TARGET).elf
|
|
@echo hex $@
|
|
@$(OC) -O ihex $< $@
|
|
|
|
##############################################################################
|
|
# Create .lst file from .elf file
|
|
|
|
./$(TARGET).lst: $(TEMP)/$(TARGET).elf
|
|
@echo lst $@
|
|
@$(OD) -d -S $< > $@
|
|
|
|
##############################################################################
|
|
# Create .sym file from .elf file
|
|
|
|
./$(TARGET).sym: $(TEMP)/$(TARGET).elf
|
|
@echo sym $@
|
|
@$(NM) -n $< > $@
|
|
|
|
##############################################################################
|
|
# Create .siz file from .elf file
|
|
|
|
./$(TARGET).siz: $(TEMP)/$(TARGET).elf
|
|
@echo siz $@
|
|
@$(SZ) $< > $@
|
|
|
|
##############################################################################
|
|
# Create .uf2 file from .elf file
|
|
|
|
./$(TARGET).uf2: $(TEMP)/$(TARGET).elf
|
|
@echo uf2 $@
|
|
@$(UF) $< $@
|
|
|
|
##############################################################################
|
|
# Create .o files from .c files
|
|
|
|
define CC_TEMP
|
|
$(TEMP)/$(notdir $(basename $(1))).o : $(1) $(MAKEFILE) $(INCLUDEFILE)
|
|
@echo CC $$<
|
|
@$(CC) $$(DEFINE) $$(IPATH) $$(CFLAGS) -std=gnu11 -c $$< -o $$@
|
|
endef
|
|
|
|
$(foreach src, $(CSRC), $(eval $(call CC_TEMP, $(src))))
|
|
|
|
##############################################################################
|
|
# Create .o files from .cpp files
|
|
|
|
define CPP_TEMP
|
|
$(TEMP)/$(notdir $(basename $(1))).o : $(1) $(MAKEFILE) $(INCLUDEFILE)
|
|
@echo C++ $$<
|
|
@$(CPP) $$(DEFINE) $$(IPATH) $$(CPPFLAGS) -c $$< -o $$@
|
|
endef
|
|
|
|
$(foreach src, $(SRC), $(eval $(call CPP_TEMP, $(src))))
|
|
|
|
##############################################################################
|
|
# Create .o files from .S files
|
|
|
|
define AS_TEMP
|
|
$(TEMP)/$(notdir $(basename $(1))).o : $(1) $(MAKEFILE) $(INCLUDEFILE)
|
|
@echo ASM $$<
|
|
@$(CC) $$(DEFINE) $$(IPATH) $$(AFLAGS) -c $$< -o $$@
|
|
endef
|
|
|
|
$(foreach src, $(ASRC), $(eval $(call AS_TEMP, $(src))))
|
|
|
|
##############################################################################
|
|
# Create .elf from .o files
|
|
|
|
$(TEMP)/$(TARGET).elf: $(ALLOBJ) $(MAKEFILE) $(LDSCRIPT)
|
|
@echo ld $@
|
|
@$(LD) $(LDFLAGS) $(ALLOBJ) -o $@
|
|
|
|
##############################################################################
|
|
# Head dependencies, to recompile C after changing H
|
|
|
|
ifneq (${MAKECMDGOALS},clean)
|
|
-include $(wildcard $(TEMP)/*.d)
|
|
endif
|
|
|
|
##############################################################################
|
|
# List of dependencies not creating files
|
|
|
|
.PHONY: clean all createdirs elf bin hex lst sym siz uf2
|