sdk-hwV1.3/lichee/xr806/appos/gcc.mk

226 lines
6.3 KiB
Makefile
Executable File

#
# Common rules for GCC Makefile
#
# ----------------------------------------------------------------------------
# cross compiler
# ----------------------------------------------------------------------------
CC_DIR := $(TINA_TOP)/lichee/xr806/tools/gcc-arm-none-eabi-8-2019-q3-update/bin
CC_PREFIX := $(CC_DIR)/arm-none-eabi-
AS := $(CC_PREFIX)as
CC := $(CC_PREFIX)gcc
CPP := $(CC_PREFIX)g++
LD := $(CC_PREFIX)ld
NM := $(CC_PREFIX)nm
AR := $(CC_PREFIX)ar
OBJCOPY := $(CC_PREFIX)objcopy
OBJDUMP := $(CC_PREFIX)objdump
SIZE := $(CC_PREFIX)size
STRIP := $(CC_PREFIX)strip
# ----------------------------------------------------------------------------
# tools
# ----------------------------------------------------------------------------
CP := cp
# $(MKIMAGE) is a tool for creating image
ifeq ($(shell uname -o), Cygwin)
MKIMAGE := mkimage.exe
else
MKIMAGE := mkimage
endif
# ----------------------------------------------------------------------------
# global configuration
# ----------------------------------------------------------------------------
include $(ROOT_PATH)/config.mk
# ----------------------------------------------------------------------------
# options
# ----------------------------------------------------------------------------
QUIET ?= n
OPTIMIZE := y
MDK_DBG_EN := n
HARDFP := n
# building display
ifeq ($(QUIET), y)
Q := @
S := -s
endif
ifeq ($(OPTIMIZE), y)
OPTIMIZE_FLAG := -Os -DNDEBUG
else
OPTIMIZE_FLAG := -O0 -DDEBUG
endif
ifeq ($(MDK_DBG_EN), y)
DBG_FLAG := -gdwarf-2
else
DBG_FLAG := -g
endif
ifeq ($(HARDFP), y)
FLOAT_ABI := hard
else
FLOAT_ABI := softfp
endif
ifeq ($(CONFIG_TRUSTZONE), y)
NSC_SYMBOL := nsc_symbol.o
endif
# ----------------------------------------------------------------------------
# flags for compiler and linker
# ----------------------------------------------------------------------------
# CPU/FPU options
ifeq ($(CONFIG_CPU_ARCH), CM4F)
CPU := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=$(FLOAT_ABI)
else ifeq ($(CONFIG_CPU_ARCH), CM3)
CPU := -mcpu=cortex-m3 -mthumb
else ifeq ($(CONFIG_CPU_ARCH), CM33F)
CPU := -mcpu=cortex-m33 -mtune=cortex-m33 -march=armv8-m.main+dsp -mfpu=fpv5-sp-d16 -mfloat-abi=$(FLOAT_ABI) -mcmse -mthumb
else
ifeq ($(make_configing), n)
$(error cpu arch not defined)
endif
endif
CC_FLAGS = $(CPU) -c $(DBG_FLAG) -fno-common -fmessage-length=0 \
-fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer \
-Wall -Werror -Wno-cpp -Wpointer-arith -Wno-error=unused-function \
-MMD -MP $(OPTIMIZE_FLAG)
CC_FLAGS += -Wno-error=stringop-truncation -Wno-error=restrict
# include config header for all c and cpp files
CC_FLAGS += -include xr_config.h
LD_FLAGS = $(CPU) -Wl,--gc-sections --specs=nano.specs \
-Wl,-Map=$(basename $@).map,--cref
# config symbols
CC_SYMBOLS = $(CONFIG_SYMBOLS)
AS_SYMBOLS = $(CONFIG_SYMBOLS)
AS_SYMBOLS += -include $(ROOT_PATH)/include/generated/autoconf.h
ifeq ($(CONFIG_LIBC_PRINTF_FLOAT), y)
LD_FLAGS += -u _printf_float
endif
ifeq ($(CONFIG_LIBC_SCANF_FLOAT), y)
LD_FLAGS += -u _scanf_float
endif
LD_FLAGS += -Wl,--wrap,main
LD_FLAGS += -Wl,--wrap,exit
LD_FLAGS += -Wl,--wrap,_malloc_r
LD_FLAGS += -Wl,--wrap,_realloc_r
LD_FLAGS += -Wl,--wrap,_free_r
LD_FLAGS += -Wl,--wrap,gettimeofday
LD_FLAGS += -Wl,--wrap,settimeofday
LD_FLAGS += -Wl,--wrap,time
ifeq ($(CONFIG_LIBC_WRAP_STDIO), y)
LD_FLAGS += -Wl,--wrap,printf
LD_FLAGS += -Wl,--wrap,vprintf
LD_FLAGS += -Wl,--wrap,puts
LD_FLAGS += -Wl,--wrap,fprintf
LD_FLAGS += -Wl,--wrap,vfprintf
LD_FLAGS += -Wl,--wrap,fputs
LD_FLAGS += -Wl,--wrap,putchar
LD_FLAGS += -Wl,--wrap,putc
LD_FLAGS += -Wl,--wrap,fputc
LD_FLAGS += -Wl,--wrap,fflush
endif
LD_FLAGS += -Wl,--wrap,memcpy
LD_FLAGS += -Wl,--wrap,memset
LD_FLAGS += -Wl,--wrap,memmove
# standard libraries
LD_SYS_LIBS := -lstdc++ -lsupc++ -lm -lc -lgcc
# include path
INCLUDE_ROOT_PATH := $(ROOT_PATH)/include
INCLUDE_PATHS = -I$(INCLUDE_ROOT_PATH)
INCLUDE_PATHS += -I$(INCLUDE_ROOT_PATH)/libc
INCLUDE_PATHS += -I$(INCLUDE_ROOT_PATH)/driver/cmsis
ifeq ($(CONFIG_OS_FREERTOS), y)
INCLUDE_OS_FREERTOS_PATHS := $(INCLUDE_ROOT_PATH)/kernel/FreeRTOS/FreeRTOS$(CONFIG_OS_FREERTOS_VERSION_STR)
INCLUDE_OS_FREERTOS_PLATFORM_PATHS := $(shell find $(INCLUDE_OS_FREERTOS_PATHS)/portable/GCC/$(CONFIG_OS_FREERTOS_PLATFORM) -type d)
INCLUDE_PATHS += -I$(INCLUDE_OS_FREERTOS_PATHS)
INCLUDE_PATHS += $(foreach dir, $(INCLUDE_OS_FREERTOS_PLATFORM_PATHS), -I$(dir))
endif
ifeq ($(CONFIG_WLAN), y)
ifeq ($(CONFIG_LWIP_VER_1_4_1), y)
LWIP_DIR := lwip-1.4.1
else ifeq ($(CONFIG_LWIP_VER_2_0_3), y)
LWIP_DIR := lwip-2.0.3
else ifeq ($(CONFIG_LWIP_VER_2_1_2), y)
LWIP_DIR := lwip-2.1.2
endif
MBEDTLS_DIR := mbedtls-$(CONFIG_MBEDTLS_VER)
INCLUDE_PATHS += -I$(INCLUDE_ROOT_PATH)/net
INCLUDE_PATHS += -I$(INCLUDE_ROOT_PATH)/net/$(LWIP_DIR)
INCLUDE_PATHS += -I$(INCLUDE_ROOT_PATH)/net/$(MBEDTLS_DIR)
ifeq ($(CONFIG_LWIP_VER_1_4_1), y)
INCLUDE_PATHS += -I$(INCLUDE_ROOT_PATH)/net/$(LWIP_DIR)/ipv4
endif
endif
# platform relative path
PLATFORM_RELATIVE_PATH := xradio_v$(CONFIG_CHIP_ARCH_VER)
ifeq ($(CONFIG_PLATFORM_FPGA), y)
PLATFORM_RELATIVE_PATH := $(PLATFORM_RELATIVE_PATH)/fpga
endif
ifeq ($(CONFIG_ETF), y)
PLATFORM_RELATIVE_PATH := $(PLATFORM_RELATIVE_PATH)/etf
endif
ifeq ($(CONFIG_BLE), y)
INCLUDE_PATHS += -I$(INCLUDE_ROOT_PATH)/blec
endif
ifeq ($(CONFIG_BLEHOST), y)
INCLUDE_PATHS += -I$(INCLUDE_ROOT_PATH)/ble
endif
ifeq ($(CONFIG_TRUSTZONE), y)
INCLUDE_PATHS += -I$(INCLUDE_ROOT_PATH)/trustzone
endif
# ----------------------------------------------------------------------------
# common makefile for library and project
# ----------------------------------------------------------------------------
LIB_MAKE_RULES := $(ROOT_PATH)/src/lib.mk
PRJ_MAKE_RULES := $(ROOT_PATH)/project/project.mk
# ----------------------------------------------------------------------------
# common rules of compiling objects
# ----------------------------------------------------------------------------
%.o: %.asm
$(Q)$(CC) $(CPU) $(AS_SYMBOLS) -c -x assembler-with-cpp -o $@ $<
%.o: %.s
$(Q)$(CC) $(CPU) $(AS_SYMBOLS) -c -x assembler-with-cpp -o $@ $<
%.o: %.S
$(Q)$(CC) $(CPU) $(AS_SYMBOLS) -c -x assembler-with-cpp -o $@ $<
%.o: %.c
$(Q)$(CC) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99 $(INCLUDE_PATHS) -o $@ $<
%.o: %.cpp
$(Q)$(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<