# Location of ARM toolchain SDK_PATH = /home/Xilinx/SDK/2018.2 ARM_TOOLS_PATH = $(SDK_PATH)/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin MKDIR_P = mkdir -p # Compilation tools CC = gcc CC_ARM = $(ARM_TOOLS_PATH)/arm-linux-gnueabihf-gcc CXX_ARM = $(ARM_TOOLS_PATH)/arm-linux-gnueabihf-g++ CFLAGS = -Wall -std=c99 -Wno-format-overflow CXXFLAGS = -Wall -Wno-format-overflow # DATABASE DEFINES = # Needed by verifier_regeneration.c for Intel arch LIB_PATHS = INCLUDE_PATHS = LINK_FLAGS = LIB_PATHS_ARM = # Only needed by ttp_DB.c but it's fine if included everywhere INCLUDE_PATHS_ARM = LINK_FLAGS_ARM = -lm # All output binaries BIN_TE = device_provision.elf TARGETS = $(BIN_TE) # Object files required for each binary USER_OBJS_TE = common.o utility.o device_common.o device_provision.o # Build directory locations OBJDIR_X86 = build/x86 OBJDIR_ARM_CXX = build/arm-g++ OBJDIR_ARM_CC = build/arm-gcc # Append build directory paths to lists of object files OBJS_TE = $(patsubst %, $(OBJDIR_ARM_CC)/%, $(USER_OBJS_TE)) # Create the build directory automatically $(shell $(MKDIR_P) $(OBJDIR_X86) $(OBJDIR_ARM_CC) $(OBJDIR_ARM_CXX)) # Default target .PHONY: all all: $(TARGETS) # Output binaries $(BIN_TE): $(OBJS_TE) $(CC_ARM) $^ $(LIB_PATHS_ARM) $(LINK_FLAGS_ARM) -o $@ # ARM C object files $(OBJDIR_ARM_CC)/device_provision.o: device_provision.c common.h $(OBJDIR_ARM_CC)/common.o: common.c common.h utility.h $(OBJDIR_ARM_CC)/utility.o: utility.c utility.h $(OBJDIR_ARM_CC)/device_common.o: device_common.c device_common.h common.h $(OBJDIR_ARM_CC)/%.o: $(CC_ARM) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS_ARM) -c $< -o $@ # Utility .PHONY: clean install install: $(BIN_TRG) $(BIN_TTP) ./copy_to_devices.sh $(BIN_TRG) $(BIN_TTP) clean: -rm $(TARGETS) -rm -r build