kamilsss655/Makefile

382 lines
8.8 KiB
Makefile
Raw Normal View History

2023-09-09 07:03:56 +00:00
2023-09-25 12:27:52 +00:00
# compile options (see README.md for descriptions)
# 0 = disable
# 1 = enable
#
2023-10-05 11:22:09 +00:00
ENABLE_CLANG := 0
2023-09-16 06:08:18 +00:00
ENABLE_SWD := 0
ENABLE_OVERLAY := 0
2023-10-01 18:56:04 +00:00
ENABLE_LTO := 1
2023-09-14 10:16:45 +00:00
ENABLE_UART := 1
2023-09-16 06:55:09 +00:00
ENABLE_AIRCOPY := 0
2023-10-02 01:52:59 +00:00
ENABLE_FMRADIO := 1
2023-09-14 10:16:45 +00:00
ENABLE_NOAA := 0
ENABLE_VOICE := 0
2023-10-04 16:43:28 +00:00
ENABLE_VOX := 1
2023-09-14 10:16:45 +00:00
ENABLE_ALARM := 0
2023-10-05 13:10:12 +00:00
ENABLE_TX1750 := 0
ENABLE_PWRON_PASSWORD := 0
2023-09-29 13:01:26 +00:00
ENABLE_BIG_FREQ := 1
2023-09-24 00:36:43 +00:00
ENABLE_SMALL_BOLD := 1
2023-09-14 10:16:45 +00:00
ENABLE_KEEP_MEM_NAME := 1
ENABLE_WIDE_RX := 1
ENABLE_TX_WHEN_AM := 0
ENABLE_F_CAL_MENU := 0
2023-09-14 11:02:47 +00:00
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1
2023-09-18 10:54:42 +00:00
ENABLE_BOOT_BEEPS := 0
2023-09-30 13:08:26 +00:00
ENABLE_SHOW_CHARGE_LEVEL := 1
2023-10-09 23:37:29 +00:00
ENABLE_REVERSE_BAT_SYMBOL := 0
ENABLE_CODE_SCAN_TIMEOUT := 0
2023-09-21 22:25:46 +00:00
ENABLE_AM_FIX := 1
ENABLE_AM_FIX_SHOW_DATA := 0
ENABLE_SQUELCH_MORE_SENSITIVE := 1
2023-10-05 22:58:55 +00:00
ENABLE_FASTER_CHANNEL_SCAN := 1
ENABLE_RSSI_BAR := 1
2023-10-02 01:52:59 +00:00
ENABLE_AUDIO_BAR := 1
ENABLE_COPY_CHAN_TO_VFO := 1
2023-10-04 16:43:28 +00:00
ENABLE_SPECTRUM := 1
#ENABLE_SINGLE_VFO_CHAN := 1
#ENABLE_BAND_SCOPE := 1
2023-09-14 10:16:45 +00:00
#############################################################
2023-09-14 10:16:45 +00:00
TARGET = firmware
2023-09-14 08:56:30 +00:00
2023-10-05 11:22:09 +00:00
ifeq ($(ENABLE_CLANG),1)
# GCC's linker, ld, doesn't understand LLVM's generated bytecode
ENABLE_LTO := 0
endif
ifeq ($(ENABLE_LTO),1)
# can't have LTO and OVERLAY enabled at same time
ENABLE_OVERLAY := 0
endif
2023-09-09 07:03:56 +00:00
BSP_DEFINITIONS := $(wildcard hardware/*/*.def)
2023-09-14 18:38:28 +00:00
BSP_HEADERS := $(patsubst hardware/%,bsp/%,$(BSP_DEFINITIONS))
BSP_HEADERS := $(patsubst %.def,%.h,$(BSP_HEADERS))
2023-09-09 07:03:56 +00:00
OBJS =
# Startup files
OBJS += start.o
OBJS += init.o
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_OVERLAY),1)
OBJS += sram-overlay.o
endif
2023-09-09 07:03:56 +00:00
OBJS += external/printf/printf.o
# Drivers
OBJS += driver/adc.o
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_UART),1)
OBJS += driver/aes.o
endif
2023-09-09 07:03:56 +00:00
OBJS += driver/backlight.o
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_FMRADIO),1)
OBJS += driver/bk1080.o
endif
2023-09-09 07:03:56 +00:00
OBJS += driver/bk4819.o
2023-09-14 08:56:30 +00:00
ifeq ($(filter $(ENABLE_AIRCOPY) $(ENABLE_UART),1),1)
OBJS += driver/crc.o
endif
2023-09-09 07:03:56 +00:00
OBJS += driver/eeprom.o
2023-09-14 10:16:45 +00:00
ifeq ($(ENABLE_OVERLAY),1)
OBJS += driver/flash.o
2023-09-14 08:56:30 +00:00
endif
2023-09-09 07:03:56 +00:00
OBJS += driver/gpio.o
OBJS += driver/i2c.o
OBJS += driver/keyboard.o
OBJS += driver/spi.o
OBJS += driver/st7565.o
OBJS += driver/system.o
OBJS += driver/systick.o
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_UART),1)
OBJS += driver/uart.o
endif
2023-09-09 07:03:56 +00:00
# Main
OBJS += app/action.o
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_AIRCOPY),1)
OBJS += app/aircopy.o
endif
2023-09-09 07:03:56 +00:00
OBJS += app/app.o
OBJS += app/dtmf.o
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_FMRADIO),1)
OBJS += app/fm.o
endif
2023-09-09 07:03:56 +00:00
OBJS += app/generic.o
OBJS += app/main.o
OBJS += app/menu.o
2023-09-29 13:01:26 +00:00
ifeq ($(ENABLE_SPECTRUM), 1)
OBJS += app/spectrum.o
endif
2023-09-09 07:03:56 +00:00
OBJS += app/scanner.o
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_UART),1)
OBJS += app/uart.o
endif
ifeq ($(ENABLE_AM_FIX), 1)
OBJS += am_fix.o
endif
2023-09-09 07:03:56 +00:00
OBJS += audio.o
OBJS += bitmaps.o
OBJS += board.o
OBJS += dcs.o
OBJS += font.o
OBJS += frequencies.o
OBJS += functions.o
OBJS += helper/battery.o
OBJS += helper/boot.o
OBJS += misc.o
OBJS += radio.o
OBJS += scheduler.o
OBJS += settings.o
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_AIRCOPY),1)
OBJS += ui/aircopy.o
endif
2023-09-09 07:03:56 +00:00
OBJS += ui/battery.o
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_FMRADIO),1)
OBJS += ui/fmradio.o
endif
2023-09-09 07:03:56 +00:00
OBJS += ui/helper.o
OBJS += ui/inputbox.o
2023-10-05 23:18:47 +00:00
ifeq ($(ENABLE_PWRON_PASSWORD),1)
OBJS += ui/lock.o
endif
2023-09-09 07:03:56 +00:00
OBJS += ui/main.o
OBJS += ui/menu.o
OBJS += ui/scanner.o
OBJS += ui/status.o
OBJS += ui/ui.o
OBJS += ui/welcome.o
OBJS += version.o
OBJS += main.o
ifeq ($(OS), Windows_NT)
2023-09-09 07:03:56 +00:00
TOP := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
else
TOP := $(shell pwd)
endif
2023-09-14 08:56:30 +00:00
AS = arm-none-eabi-gcc
2023-10-05 11:22:09 +00:00
CC =
2023-09-14 08:56:30 +00:00
LD = arm-none-eabi-gcc
2023-10-05 12:42:14 +00:00
2023-10-05 11:22:09 +00:00
ifeq ($(ENABLE_CLANG),0)
CC += arm-none-eabi-gcc
# Use GCC's linker to avoid undefined symbol errors
# LD += arm-none-eabi-gcc
else
# May need to adjust this to match your system
CC += clang --sysroot=/usr/arm-none-eabi --target=arm-none-eabi
# Bloats binaries to 512MB
# LD = ld.lld
endif
2023-09-09 07:03:56 +00:00
OBJCOPY = arm-none-eabi-objcopy
2023-09-14 08:56:30 +00:00
SIZE = arm-none-eabi-size
2023-09-09 07:03:56 +00:00
# the user might not have/want git installed
2023-09-29 19:48:23 +00:00
# can set own version string here (max 7 chars)
2023-09-14 08:56:30 +00:00
GIT_HASH := $(shell git rev-parse --short HEAD)
2023-09-29 19:48:23 +00:00
#GIT_HASH := 230930b
2023-09-25 12:27:52 +00:00
2023-09-27 22:22:01 +00:00
$(info GIT_HASH = $(GIT_HASH))
2023-09-09 07:03:56 +00:00
2023-09-14 08:56:30 +00:00
ASFLAGS = -c -mcpu=cortex-m0
ifeq ($(ENABLE_OVERLAY),1)
ASFLAGS += -DENABLE_OVERLAY
endif
2023-09-14 10:16:45 +00:00
2023-10-05 11:22:09 +00:00
CFLAGS =
ifeq ($(ENABLE_CLANG),0)
CFLAGS += -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c11 -MMD
2023-10-05 12:42:14 +00:00
#CFLAGS += -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c99 -MMD
#CFLAGS += -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=gnu99 -MMD
#CFLAGS += -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=gnu11 -MMD
2023-10-05 11:22:09 +00:00
else
2023-10-05 12:42:14 +00:00
# Oz needed to make it fit on flash
2023-10-05 11:22:09 +00:00
CFLAGS += -Oz -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c11 -MMD
endif
2023-09-29 19:48:23 +00:00
2023-10-05 11:22:09 +00:00
ifeq ($(ENABLE_LTO),1)
CFLAGS += -flto=2
else
2023-10-05 12:42:14 +00:00
# We get most of the space savings if LTO creates problems
CFLAGS += -ffunction-sections -fdata-sections
2023-10-01 11:44:22 +00:00
endif
# May cause unhelpful build failures
#CFLAGS += -Wpadded
2023-10-05 15:28:20 +00:00
# catch any and all warnings
2023-10-16 14:52:32 +00:00
CFLAGS += -Wextra
2023-09-09 07:03:56 +00:00
CFLAGS += -DPRINTF_INCLUDE_CONFIG_H
2023-09-14 08:56:30 +00:00
CFLAGS += -DGIT_HASH=\"$(GIT_HASH)\"
2023-09-29 13:01:26 +00:00
ifeq ($(ENABLE_SPECTRUM),1)
CFLAGS += -DENABLE_SPECTRUM
endif
2023-09-16 06:08:18 +00:00
ifeq ($(ENABLE_SWD),1)
CFLAGS += -DENABLE_SWD
endif
2023-10-01 11:44:22 +00:00
ifeq ($(ENABLE_OVERLAY),1)
CFLAGS += -DENABLE_OVERLAY
endif
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_AIRCOPY),1)
CFLAGS += -DENABLE_AIRCOPY
endif
ifeq ($(ENABLE_FMRADIO),1)
CFLAGS += -DENABLE_FMRADIO
endif
ifeq ($(ENABLE_UART),1)
CFLAGS += -DENABLE_UART
endif
ifeq ($(ENABLE_BIG_FREQ),1)
CFLAGS += -DENABLE_BIG_FREQ
endif
2023-09-24 00:36:43 +00:00
ifeq ($(ENABLE_SMALL_BOLD),1)
CFLAGS += -DENABLE_SMALL_BOLD
endif
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_NOAA),1)
CFLAGS += -DENABLE_NOAA
endif
ifeq ($(ENABLE_VOICE),1)
CFLAGS += -DENABLE_VOICE
endif
ifeq ($(ENABLE_VOX),1)
CFLAGS += -DENABLE_VOX
endif
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_ALARM),1)
CFLAGS += -DENABLE_ALARM
endif
ifeq ($(ENABLE_TX1750),1)
CFLAGS += -DENABLE_TX1750
endif
2023-10-05 23:18:47 +00:00
ifeq ($(ENABLE_PWRON_PASSWORD),1)
CFLAGS += -DENABLE_PWRON_PASSWORD
endif
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_KEEP_MEM_NAME),1)
2023-10-02 01:02:34 +00:00
CFLAGS += -DENABLE_KEEP_MEM_NAME
2023-09-14 08:56:30 +00:00
endif
ifeq ($(ENABLE_WIDE_RX),1)
CFLAGS += -DENABLE_WIDE_RX
endif
ifeq ($(ENABLE_TX_WHEN_AM),1)
CFLAGS += -DENABLE_TX_WHEN_AM
endif
ifeq ($(ENABLE_F_CAL_MENU),1)
CFLAGS += -DENABLE_F_CAL_MENU
endif
2023-09-14 11:02:47 +00:00
ifeq ($(ENABLE_CTCSS_TAIL_PHASE_SHIFT),1)
CFLAGS += -DENABLE_CTCSS_TAIL_PHASE_SHIFT
2023-09-14 10:16:45 +00:00
endif
ifeq ($(ENABLE_BOOT_BEEPS),1)
CFLAGS += -DENABLE_BOOT_BEEPS
endif
ifeq ($(ENABLE_SHOW_CHARGE_LEVEL),1)
CFLAGS += -DENABLE_SHOW_CHARGE_LEVEL
endif
ifeq ($(ENABLE_REVERSE_BAT_SYMBOL),1)
CFLAGS += -DENABLE_REVERSE_BAT_SYMBOL
endif
ifeq ($(ENABLE_CODE_SCAN_TIMEOUT),1)
CFLAGS += -DENABLE_CODE_SCAN_TIMEOUT
endif
2023-09-21 22:25:46 +00:00
ifeq ($(ENABLE_AM_FIX),1)
CFLAGS += -DENABLE_AM_FIX
2023-09-21 22:06:47 +00:00
endif
ifeq ($(ENABLE_AM_FIX_SHOW_DATA),1)
CFLAGS += -DENABLE_AM_FIX_SHOW_DATA
endif
2023-09-23 16:23:21 +00:00
ifeq ($(ENABLE_AM_FIX_TEST1),1)
CFLAGS += -DENABLE_AM_FIX_TEST1
endif
ifeq ($(ENABLE_SQUELCH_MORE_SENSITIVE),1)
CFLAGS += -DENABLE_SQUELCH_MORE_SENSITIVE
endif
ifeq ($(ENABLE_FASTER_CHANNEL_SCAN),1)
CFLAGS += -DENABLE_FASTER_CHANNEL_SCAN
2023-09-22 18:48:17 +00:00
endif
ifeq ($(ENABLE_BACKLIGHT_ON_RX),1)
CFLAGS += -DENABLE_BACKLIGHT_ON_RX
2023-09-22 18:48:17 +00:00
endif
ifeq ($(ENABLE_RSSI_BAR),1)
CFLAGS += -DENABLE_RSSI_BAR
endif
ifeq ($(ENABLE_AUDIO_BAR),1)
CFLAGS += -DENABLE_AUDIO_BAR
endif
ifeq ($(ENABLE_COPY_CHAN_TO_VFO),1)
CFLAGS += -DENABLE_COPY_CHAN_TO_VFO
endif
2023-09-14 08:56:30 +00:00
ifeq ($(ENABLE_SINGLE_VFO_CHAN),1)
CFLAGS += -DENABLE_SINGLE_VFO_CHAN
endif
ifeq ($(ENABLE_BAND_SCOPE),1)
CFLAGS += -DENABLE_BAND_SCOPE
endif
2023-09-10 08:57:49 +00:00
2023-10-05 11:22:09 +00:00
LDFLAGS =
ifeq ($(ENABLE_CLANG),0)
LDFLAGS += -mcpu=cortex-m0 -nostartfiles -Wl,-T,firmware.ld
else
# Fix warning about implied executable stack
LDFLAGS += -z noexecstack -mcpu=cortex-m0 -nostartfiles -Wl,-T,firmware.ld
endif
2023-09-09 07:03:56 +00:00
# Use newlib-nano instead of newlib
LDFLAGS += --specs=nano.specs
2023-10-05 11:22:09 +00:00
ifeq ($(ENABLE_LTO),0)
2023-10-05 12:42:14 +00:00
# Throw away unneeded func/data sections like LTO does
LDFLAGS += -Wl,--gc-sections
endif
2023-09-09 07:03:56 +00:00
ifeq ($(DEBUG),1)
ASFLAGS += -g
2023-10-05 12:42:14 +00:00
CFLAGS += -g
2023-09-09 07:03:56 +00:00
LDFLAGS += -g
endif
INC =
INC += -I $(TOP)
INC += -I $(TOP)/external/CMSIS_5/CMSIS/Core/Include/
INC += -I $(TOP)/external/CMSIS_5/Device/ARM/ARMCM0/Include
LIBS =
DEPS = $(OBJS:.o=.d)
all: $(TARGET)
$(OBJCOPY) -O binary $< $<.bin
-python fw-pack.py $<.bin $(GIT_HASH) $<.packed.bin
-python3 fw-pack.py $<.bin $(GIT_HASH) $<.packed.bin
2023-09-09 07:03:56 +00:00
$(SIZE) $<
debug:
/opt/openocd/bin/openocd -c "bindto 0.0.0.0" -f interface/jlink.cfg -f dp32g030.cfg
flash:
/opt/openocd/bin/openocd -c "bindto 0.0.0.0" -f interface/jlink.cfg -f dp32g030.cfg -c "write_image firmware.bin 0; shutdown;"
version.o: .FORCE
$(TARGET): $(OBJS)
$(LD) $(LDFLAGS) $^ -o $@ $(LIBS)
bsp/dp32g030/%.h: hardware/dp32g030/%.def
%.o: %.c | $(BSP_HEADERS)
$(CC) $(CFLAGS) $(INC) -c $< -o $@
%.o: %.S
$(AS) $(ASFLAGS) $< -o $@
.FORCE:
-include $(DEPS)
clean:
2023-09-29 19:48:23 +00:00
rm -f $(TARGET).bin $(TARGET).packed.bin $(TARGET) $(OBJS) $(DEPS)