113 lines
3.1 KiB
Makefile
113 lines
3.1 KiB
Makefile
# Toolchain configuration
|
|
CROSS_COMPILE := arm-none-eabi-
|
|
TARGET ?= application
|
|
|
|
BUILD_DIR ?= build
|
|
BIN_DIR := $(BUILD_DIR)/bin
|
|
|
|
# SDK stuff
|
|
SDK_ROOT := lib/amb1_sdk
|
|
SOC_PATH := $(SDK_ROOT)/soc/realtek/8711b
|
|
TOOLS_DIR := $(SOC_PATH)/misc/iar_utility/common/tools
|
|
|
|
CC := $(CROSS_COMPILE)gcc
|
|
AR := $(CROSS_COMPILE)ar
|
|
AS := $(CROSS_COMPILE)as
|
|
NM := $(CROSS_COMPILE)nm
|
|
LD := $(CROSS_COMPILE)gcc
|
|
OBJCOPY := $(CROSS_COMPILE)objcopy
|
|
OBJDUMP := $(CROSS_COMPILE)objdump
|
|
|
|
# OTA config
|
|
OTA_IDX ?= 1
|
|
LINKER_SCRIPT := rlx8711B-symbol-v02-img2_xip$(OTA_IDX).ld
|
|
IMAGE2_OTA := image2_all_ota$(OTA_IDX).bin
|
|
|
|
# Build info
|
|
BUILD_INFO ?= include/build_info.h
|
|
|
|
# inc and src
|
|
include $(MKFILES)/includes.mk
|
|
include $(MKFILES)/sources.mk
|
|
|
|
# compiler flags
|
|
COMMON_FLAGS := \
|
|
-mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 \
|
|
-Os
|
|
|
|
CFLAGS := $(COMMON_FLAGS) \
|
|
-DM4 -DCONFIG_PLATFORM_8711B \
|
|
-ffunction-sections -fdata-sections -fomit-frame-pointer \
|
|
-fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables \
|
|
-fno-builtin -fno-short-enums \
|
|
-std=gnu99 \
|
|
|
|
LFLAGS := $(COMMON_FLAGS) \
|
|
--specs=nano.specs -nostartfiles \
|
|
-Wl,--gc-sections \
|
|
-Wl,--entry=Reset_Handler \
|
|
-Wl,--no-enum-size-warning -Wl,--no-wchar-size-warning \
|
|
-Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=realloc \
|
|
-Wl,--wrap=rom_psk_CalcGTK -Wl,--wrap=rom_psk_CalcPTK \
|
|
-Wl,--wrap=CalcMIC -Wl,--wrap=CheckMIC \
|
|
-Wl,--wrap=aes_80211_encrypt -Wl,--wrap=aes_80211_decrypt \
|
|
-Wl,--wrap=DecGTK \
|
|
-Wl,--print-memory-usage
|
|
|
|
# libs
|
|
LIB_DIR := $(SOC_PATH)/misc/bsp/lib/common/GCC
|
|
LIBS := $(addprefix -l_,platform wlan eap http wps p2p rtlstd) \
|
|
$(addprefix -l,m c nosys gcc)
|
|
LIBFLAGS := -L$(LIB_DIR) $(LIBS)
|
|
|
|
# obj files - handle both RAM and DRAM
|
|
OBJS := $(patsubst %.c,$(BUILD_DIR)/%.o,$(SRC_C) $(DRAM_C))
|
|
DEPS := $(OBJS:.o=.d)
|
|
|
|
.PHONY: all build_info clean post_process directory_structure
|
|
|
|
all: $(BIN_DIR)/$(TARGET).axf
|
|
|
|
$(BIN_DIR)/$(TARGET).axf: $(OBJS) $(BOOTLOADER) | $(BIN_DIR)
|
|
$(LD) $(LFLAGS) -o $@ $(OBJS) $(BOOTLOADER) $(LIBFLAGS) -T./$(LINKER_SCRIPT)
|
|
$(OBJDUMP) -d $@ > $(BIN_DIR)/$(TARGET).asm
|
|
$(NM) $@ | sort > $(BIN_DIR)/$(TARGET).nmap
|
|
$(MAKE) -f $(firstword $(MAKEFILE_LIST)) post_process
|
|
|
|
$(BUILD_DIR)/%.o: %.c $(BUILD_INFO) | directory_structure
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) $(INCLUDES) -MMD -MP -c $< -o $@
|
|
$(if $(findstring $(DRAM_C),$<),$(OBJCOPY) --prefix-alloc-sections .sdram $@)
|
|
|
|
# bootloader
|
|
$(BOOTLOADER): | directory_structure
|
|
@mkdir -p $(dir $@)
|
|
cp $(SOC_PATH)/misc/bsp/image/boot_all.bin $(BUILD_DIR)/boot/boot_all.bin
|
|
chmod 777 $(BUILD_DIR)/boot/boot_all.bin
|
|
$(OBJCOPY) -I binary -O elf32-littlearm -B arm \
|
|
$(BUILD_DIR)/boot/boot_all.bin $@
|
|
|
|
.PHONY: FORCE
|
|
|
|
# ota magic
|
|
post_process: $(BIN_DIR)/$(TARGET).axf
|
|
@echo "=== Processing OTA Image ==="
|
|
@scripts/process_ota.sh \
|
|
--axf $(BIN_DIR)/$(TARGET).axf \
|
|
--bin-dir $(BIN_DIR) \
|
|
--objcopy $(OBJCOPY) \
|
|
--ota-idx $(OTA_IDX) \
|
|
--tools-dir $(TOOLS_DIR)
|
|
|
|
directory_structure:
|
|
@mkdir -p $(BIN_DIR) $(dir $(OBJS))
|
|
|
|
build_info:
|
|
@echo "Generating build information..."
|
|
@scripts/generate_build_info.sh $(CC) "$(CFLAGS)" > $(BUILD_INFO)
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR)
|
|
|
|
-include $(DEPS)
|