129 lines
3.5 KiB
Makefile
129 lines
3.5 KiB
Makefile
PREFIX = /home/zj/risc-v/riscv64-unknown-elf-gcc-20170612-x86_64-linux-centos6/bin/riscv64-unknown-elf-
|
|
CC = $(PREFIX)gcc
|
|
CPP = $(PREFIX)g++
|
|
AS = $(PREFIX)gcc
|
|
AR = $(PREFIX)ar
|
|
LINK = $(PREFIX)gcc
|
|
SIZE = $(PREFIX)size
|
|
OBJDUMP = $(PREFIX)objdump
|
|
OBJCPY = $(PREFIX)objcopy
|
|
GDB = $(PREFIX)gdb
|
|
OPENOCD = /home/zj/risc-v/riscv-openocd-20170612-x86_64-linux-centos6/bin/openocd
|
|
|
|
LIBS =
|
|
DEVICE = -mcpu=arm926ej-s -ffunction-sections -fdata-sections
|
|
CFLAGS = $(DEVICE) $(patsubst %, -I"%", $(CPATH))
|
|
CXXFLAGS= $(CFLAGS)
|
|
AFLAGS = $(DEVICE) -c -x assembler-with-cpp
|
|
LFLAGS = $(DEVICE) -Wl,-Map=$(TARGET).map,-cref,-u,Reset_Handler \
|
|
-T "ld" -nostartfiles $(patsubst %, -l%, $(LIBS)) \
|
|
$(patsubst %, -L"%", $(LPATH))
|
|
|
|
CPATH =
|
|
LPATH =
|
|
################################################################
|
|
BUILD = debug
|
|
#BUILD = release
|
|
#BUILD_LIB = yes
|
|
BUILD_LIB = no
|
|
################################################################
|
|
|
|
ifeq '$(BUILD)' 'debug'
|
|
CFLAGS += -O0 -gdwarf-2
|
|
AFLAGS += -gdwarf-2
|
|
else
|
|
CFLAGS += -O2
|
|
endif
|
|
|
|
ROOT_DIR = $(shell pwd)
|
|
SUB_DIR = ${shell ls -l "${ROOT_DIR}" | grep ^d | awk '{if($$9 != "build") print $$9 }'}
|
|
################################################################
|
|
BUILD_DIR = $(ROOT_DIR)/build/$(BUILD)
|
|
BUILD_LIB_DIR =$(LPATH)
|
|
################################################################
|
|
TARGET = rtthread
|
|
export CC CPP AS AR LINK SIZE OBJDUMP OBJCPY DEVICE CFLAGS CXXFLAGS ASFLAGS LFLAGS ROOT_DIR \
|
|
BUILD BUILD_DIR BUILD_LIB_DIR
|
|
|
|
SRC_FILE = ${wildcard *.c}
|
|
SRC_FILE += ${wildcard *.cpp}
|
|
SRC_FILE += ${wildcard *.s}
|
|
#SRC_FILE = ${shell ls *.c}
|
|
#OBJ_FILE = ${SRC_FILE:.c=.o}
|
|
TMP = ${patsubst %.c, %.o, ${SRC_FILE}}
|
|
TMP += ${patsubst %.cpp, %.o, ${SRC_FILE}}
|
|
TMP += ${patsubst %.s, %.o, ${SRC_FILE}}
|
|
OBJ_FILE = $(filter %.o, $(TMP))
|
|
|
|
|
|
# Attempt to create a output directory.
|
|
$(shell [ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR})
|
|
# Verify if it was successful.
|
|
BUILD_DIR := $(shell cd $(BUILD_DIR) && /bin/pwd)
|
|
$(if $(BUILD_DIR),,$(error output directory "$(saved-output)" does not exist))
|
|
|
|
#all: $(TARGET)
|
|
all:
|
|
scons -j4
|
|
#${SIZE} -d "$(TARGET).axf"
|
|
${OBJDUMP} -S -D "$(TARGET).axf" > "${TARGET}.s"
|
|
|
|
|
|
$(SUB_DIR):ECHO
|
|
-make -C "${ROOT_DIR}/$@"
|
|
|
|
%.o:%.cpp
|
|
${CPP} ${CXXFLAGS} -c "$^" -o "${BUILD_DIR}/$@"
|
|
|
|
%.o:%.c
|
|
${CC} ${CFLAGS} -c "$^" -o "${BUILD_DIR}/$@"
|
|
|
|
%.o:%.s
|
|
${AS} ${ASFLAGS} -c "$^" -o "${BUILD_DIR}/$@"
|
|
|
|
ifneq "$(BUILD_LIB)" "yes"
|
|
|
|
$(TARGET): $(SUB_DIR) $(OBJ_FILE)
|
|
cd "${BUILD_DIR}" && ${CC} $(filter %.o, $(shell ls "$(BUILD_DIR)")) ${LFLAGS} -o "$(ROOT_DIR)/$(TARGET)"
|
|
${OBJCPY} -I elf32-littlearm -O ihex $(TARGET) $(TARGET).hex
|
|
${OBJCPY} -I elf32-littlearm -O binary $(TARGET) $(TARGET).bin
|
|
${SIZE} -d "$(TARGET)"
|
|
|
|
else
|
|
|
|
$(TARGET): $(SUB_DIR) $(OBJ_FILE)
|
|
cd "${BUILD_DIR}" && ${AR} -rc "$(BUILD_LIB_DIR)/lib${TARGET}.a" $(filter %.o, $(shell ls "$(BUILD_DIR)"))
|
|
|
|
endif
|
|
|
|
ECHO:
|
|
@echo ${SUB_DIR}
|
|
|
|
|
|
DEBUG_INTERFACE = jlink
|
|
#DEBUG_INTERFACE = stlink-v2
|
|
#DEBUG_INTERFACE = ftdi/openjtag
|
|
|
|
GDB_CMD = -ex "tar ext 127.0.0.1:3333"
|
|
GDB_CMD += -ex "monitor reset halt"
|
|
#GDB_CMD += -ex "monitor step 0x20400000"
|
|
GDB_CMD += --command=.gdbinit
|
|
|
|
run:
|
|
setsid ${OPENOCD} > /dev/null 2>&1 &
|
|
# (sleep 1 && echo -e "halt" && sleep 1) | telnet 127.0.0.1 4444
|
|
${GDB} ${TARGET}.axf ${GDB_CMD}
|
|
# arm-none-eabi-gdb ${TARGET} -ex "tar ext 127.0.0.1:3333" -ex "b main" -ex "lay n" -ex "lay n" -ex "lay n"
|
|
killall -9 openocd
|
|
|
|
programe:
|
|
setsid ${OPENOCD} > /dev/null 2>&1 &
|
|
${GDB} ${TARGET}.axf -ex "tar ext 127.0.0.1:3333" -ex "load ${TARGET}.axf"
|
|
killall -9 openocd
|
|
|
|
clean:
|
|
-cd "${BUILD_DIR}" && rm *
|
|
-rm stm32*
|
|
|
|
.PHONY: all
|