mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-24 16:57:21 +00:00
136 lines
4.0 KiB
Makefile
136 lines
4.0 KiB
Makefile
|
|
#
|
|
# Main makefile for OCWare.
|
|
#
|
|
|
|
######################
|
|
# Set proper path.
|
|
######################
|
|
|
|
OCWARE_DIR ?= $(shell pwd)
|
|
TIRTOS_DIR ?= $(HOME)/ti/tirtos_tivac_2_16_01_14
|
|
XDCTOOLS_DIR ?= $(HOME)/ti/xdctools_3_32_00_06_core
|
|
TOOLCHAIN ?= /usr
|
|
|
|
#######################
|
|
# Do not change anything below this.
|
|
#######################
|
|
|
|
OUT=bld
|
|
|
|
BIOS_DIR=$(TIRTOS_DIR)/products/bios_6_45_02_31
|
|
TIVAWARE_DIR=$(TIRTOS_DIR)/products/TivaWare_C_Series-2.1.1.71b
|
|
UIA_DIR=$(TIRTOS_DIR)/products/uia_2_00_05_50
|
|
TIRTOS_DRIVER_DIR=$(TIRTOS_DIR)/products/tidrivers_tivac_2_16_01_13
|
|
NDK_PATH = $(TIRTOS_DIR)/products/ndk_2_25_00_09/packages
|
|
NDK_INC = $(TIRTOS_DIR)/products/ndk_2_25_00_09/packages/ti/ndk/inc/bsd
|
|
|
|
BIOS_PATH=$(BIOS_DIR)/packages/ti/sysbios/posix
|
|
UIA_PATH_PATH=$(UIA_DIR)/packages
|
|
TIDRIVER_PATH=$(TIRTOS_DRIVER_DIR)/packages
|
|
XDC_PATH=$(XDCTOOLS_DIR)/packages
|
|
|
|
XDCPATH_LIST = \
|
|
$(TIRTOS_DIR)/packages \
|
|
$(TIRTOS_DRIVER_DIR)/packages \
|
|
$(BIOS_DIR)/packages \
|
|
$(NDK_PATH) \
|
|
$(UIA_DIR)/packages
|
|
|
|
TARGET = gnu.targets.arm.M4F
|
|
PLATFORM = ti.platforms.tiva:TM4C1294NCPDT
|
|
PART=TM4C1294NCPDT
|
|
ROV_XS_SUFFIX = pm4fg
|
|
CONFIG=OpenCellular
|
|
CONFIGURO_OPTS = -v -o $(OUT)/$(CONFIG)
|
|
empty:=
|
|
space:= $(empty) $(empty)
|
|
XDCPATH = $(subst $(space),;,$(XDCPATH_LIST))
|
|
|
|
CONFIGURO = $(XDCTOOLS_DIR)/xs --xdcpath="$(XDCPATH)" \
|
|
xdc.tools.configuro $(CONFIGURO_OPTS)
|
|
|
|
# Find all C source/object files.
|
|
SRC_FILE = $(shell find . -name '*.c' ! -path './test/*' ! -path './$(OUT)*')
|
|
MAIN_OBJS = $(SRC_FILE:.c=.o)
|
|
COVERAGE_OBJS = $(SRC_FILE:.c=.gcno)
|
|
|
|
CC = $(TOOLCHAIN)/bin/arm-none-eabi-gcc
|
|
CFLAGS = -Wall -mcpu=cortex-m4 -mthumb -mabi=aapcs -mapcs-frame @$(OUT)/$(CONFIG)/compiler.opt -O3
|
|
CFLAGS += -std=c99 -ffunction-sections -fdata-sections
|
|
CFLAGS += -DTIVAWARE -DPART_$(PART) -DTARGET_IS_TM4C129_RA1 -Dgcc
|
|
CFLAGS += -I$(OCWARE_DIR)/src/ -I$(OCWARE_DIR)/common/ -I$(OCWARE_DIR)/
|
|
CFLAGS += -isystem$(XDC_PATH) -isystem$(BIOS_PATH) -isystem$(TIDRIVER_PATH) -isystem$(NDK_INC) -isystem$(TIVAWARE_DIR)
|
|
|
|
LD = $(TOOLCHAIN)/bin/arm-none-eabi-gcc
|
|
LFLAGS = -nostartfiles -static -Wl,--gc-sections -march=armv7e-m -Wl,-T,OC_CONNECT1.lds
|
|
LFLAGS += --specs=nosys.specs --specs=nano.specs -mfloat-abi=hard -mfpu=fpv4-sp-d16
|
|
LFLAGS += -Wl,--print-memory-usage #Optional
|
|
LFLAGS += -Xlinker -Map=$(OUT)/main.map #Optional
|
|
LLIBS = -L$(TIVAWARE_DIR)/driverlib/gcc/
|
|
LLIBS += -L$(TIVAWARE_DIR)/grlib/gcc/
|
|
LLIBS += -L$(TIVAWARE_DIR)/usblib/gcc/
|
|
LLIBS += -Wl,-T,$(OUT)/$(CONFIG)/linker.cmd
|
|
LLIBS += -Wl,--start-group
|
|
LLIBS += -ldriver -lgr -lusb -lm -lnosys -lc
|
|
LLIBS += -Wl,--end-group
|
|
|
|
.PRECIOUS: $(OUT)%/compiler.opt $(OUT)%/linker.cmd
|
|
|
|
OBJCOPY = $(TOOLCHAIN)/bin/arm-none-eabi-objcopy
|
|
ALL_FILE = $(shell find . -name '*.c' -o -name '*.h')
|
|
LINT = clang-format
|
|
LINT_FLAGS = -i -style=file -fallback-style=none
|
|
|
|
.PRECIOUS: %/compiler.opt %/linker.cmd
|
|
|
|
default: get_cfg all
|
|
|
|
all: oc_connect1 hash
|
|
|
|
get_cfg:
|
|
cd ../utilities/build; ./envDetect.sh $(CC) $(TIRTOS_DIR)
|
|
|
|
hash:
|
|
cd ../utilities/checksums; ./hashes.sh $(shell pwd)/$(OUT) -ec
|
|
|
|
gen_schema:
|
|
cd ../utilities/schema; ./mk_schema.sh
|
|
|
|
oc_connect1: gen_schema $(OUT)/OpenCellular.bin
|
|
|
|
$(OUT)/%/compiler.opt $(OUT)/%/linker.cmd : %.cfg
|
|
$(CONFIGURO) -c $(TOOLCHAIN) -t $(TARGET) -p $(PLATFORM) -r debug $<
|
|
cp $(OUT)/$(CONFIG)/package/cfg/$*_$(ROV_XS_SUFFIX).rov.xs .
|
|
|
|
$(MAIN_OBJS): %.o: %.c $(OUT)/$(CONFIG)/compiler.opt
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
$(OUT)/OpenCellular.out: $(OUT)/$(CONFIG)/linker.cmd $(MAIN_OBJS)
|
|
$(LD) $(LFLAGS) -o $@ $(MAIN_OBJS) $(LLIBS)
|
|
|
|
$(OUT)/OpenCellular.bin: $(OUT)/OpenCellular.out
|
|
$(OBJCOPY) -S -O binary $< $@
|
|
|
|
lint:
|
|
$(LINT) $(LINT_FLAGS) $(ALL_FILE)
|
|
|
|
clean:
|
|
-rm -rf *.o *.out *.d *.rov.xs $(OUT) $(MAIN_OBJS) $(COVERAGE_OBJS)
|
|
|
|
test:
|
|
cd test && $(MAKE) $(TESTFLAGS)
|
|
|
|
ci: TESTFLAGS = ci
|
|
ci: CFLAGS += -Wextra -Wpointer-arith -Wcast-align -Wwrite-strings -Wswitch-default -Wunreachable-code -Winit-self -Wno-missing-field-initializers -Wno-unknown-pragmas -Wstrict-prototypes -Wundef
|
|
ci: CFLAGS += -ftest-coverage
|
|
ci: all test
|
|
|
|
.PHONY: all oc_connect1 clean test
|
|
|
|
# Include the automatically generated dependency files.
|
|
#
|
|
ifneq (${MAKECMDGOALS}, clean)
|
|
-include ${wildcard *.d} __dummy__
|
|
endif
|