added makefiles developed for ct
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
|
||||
SHELL := /usr/bin/env bash
|
||||
|
||||
SRC_DIR := ./src
|
||||
INC_DIR := ./inc
|
||||
OBJ_DIR := ./obj
|
||||
BIN_DIR := ./bin
|
||||
LIB_DIR := ../../libctboard
|
||||
COMMON_DIR := ../../common
|
||||
|
||||
AS_SRC := table.s
|
||||
|
||||
C_DEF := PLATFORM_M0
|
||||
C_INC :=
|
||||
C_SRC :=
|
||||
|
||||
include $(COMMON_DIR)/root.mk
|
||||
include $(COMMON_DIR)/pdf.mk
|
||||
@@ -0,0 +1,40 @@
|
||||
SHELL := /usr/bin/env bash
|
||||
|
||||
MD_FILES += readme.md
|
||||
|
||||
PDF_FILES := $(MD_FILES:.md=.pdf)
|
||||
|
||||
VERBOSITY :=
|
||||
|
||||
|
||||
.PHONY: all clean clean_all test pdf repdf remove_pdf debug_pdf gfm
|
||||
|
||||
|
||||
clean_all:: remove_pdf
|
||||
|
||||
|
||||
pdf: $(PDF_FILES)
|
||||
|
||||
|
||||
repdf: remove_pdf pdf
|
||||
|
||||
|
||||
remove_pdf:
|
||||
@rm -f $(PDF_FILES) || true
|
||||
|
||||
|
||||
debug_pdf: VERBOSITY := --verbose
|
||||
debug_pdf: $(PDF_FILES)
|
||||
|
||||
|
||||
%.pdf: %.md
|
||||
pandoc \
|
||||
--pdf-engine pdflatex \
|
||||
--listings \
|
||||
--template $(COMMON_DIR)/template.tex \
|
||||
-f markdown \
|
||||
-t pdf \
|
||||
$(VERBOSITY) \
|
||||
-o $@ \
|
||||
$<
|
||||
|
||||
@@ -0,0 +1,187 @@
|
||||
|
||||
SHELL := /usr/bin/env bash
|
||||
|
||||
PREFIX := arm-none-eabi-
|
||||
CC := $(PREFIX)gcc
|
||||
COPY := $(PREFIX)objcopy
|
||||
SIZE := $(PREFIX)size
|
||||
GDB := $(PREFIX)gdb
|
||||
|
||||
OCD := openocd
|
||||
|
||||
NAME := application
|
||||
|
||||
OPT_LEVEL_CC := -g \
|
||||
-O0
|
||||
|
||||
TARGET_FLAGS := -mcpu=cortex-m4 \
|
||||
-mthumb \
|
||||
-mfpu=fpv4-sp-d16 \
|
||||
-mfloat-abi=hard
|
||||
|
||||
WG := -Wall \
|
||||
-Wextra \
|
||||
-Wpedantic \
|
||||
-Werror
|
||||
|
||||
WCC := -Wconversion \
|
||||
-Wsign-conversion \
|
||||
-Wsign-compare \
|
||||
-Wcast-align=strict \
|
||||
-Wfloat-equal \
|
||||
-Wlogical-op
|
||||
|
||||
AS_FLAGS := $(TARGET_FLAGS) \
|
||||
$(OPT_LEVEL_CC) \
|
||||
$(VERB_LEVEL) \
|
||||
$(WG) \
|
||||
-Wa,-a,-ad,-alms=$(BIN_DIR)/$(NAME).lst \
|
||||
-x assembler-with-cpp
|
||||
|
||||
C_DEF := $(addprefix -D, $(C_DEF))
|
||||
C_INC := $(addprefix -I, $(C_INC))
|
||||
C_FLAGS := $(TARGET_FLAGS) \
|
||||
$(OPT_LEVEL_CC) \
|
||||
$(VERB_LEVEL) \
|
||||
$(WG) \
|
||||
$(WCC) \
|
||||
-Wa,-a,-ad,-alms=$(BIN_DIR)/$(NAME).lst \
|
||||
$(C_DEF) \
|
||||
$(C_INC)
|
||||
|
||||
FLAGS_FILE := ./compile_flags.txt
|
||||
|
||||
LST_DIR := $(BIN_DIR)/list-files
|
||||
|
||||
LIBCTBOARD := $(LIB_DIR)/lib/libctboard.a
|
||||
LIB_PATHS += $(LIB_DIR)/lib
|
||||
LIB_NAMES += ctboard
|
||||
|
||||
LINKER_FLAGS := $(TARGET_FLAGS) \
|
||||
-static \
|
||||
-nostartfiles \
|
||||
$(addprefix -L, $(LIB_PATHS)) \
|
||||
-lm \
|
||||
-lnosys \
|
||||
-Wl,--start-group \
|
||||
$(addprefix -l, $(LIB_NAMES)) \
|
||||
-Wl,--end-group \
|
||||
-specs=nosys.specs \
|
||||
-specs=nano.specs \
|
||||
-Wl,-Map,$(BIN_DIR)/$(NAME).map \
|
||||
-Wl,-e,Reset_Handler \
|
||||
-Wl,--gc-sections
|
||||
|
||||
LD_SCRIPT := $(LIB_DIR)/lib/linker-script.ld
|
||||
GDB_INIT := $(COMMON_DIR)/.gdbinit
|
||||
OCD_CONFIG := $(COMMON_DIR)/openocd.cfg
|
||||
|
||||
OBJ := $(addprefix $(OBJ_DIR)/, $(AS_SRC:.s=.o)) \
|
||||
$(addprefix $(OBJ_DIR)/, $(C_SRC:.c=.o))
|
||||
|
||||
ELF := $(BIN_DIR)/$(NAME).elf
|
||||
BIN := $(basename $(ELF)).bin
|
||||
|
||||
MKDIR := $(OBJ_DIR) \
|
||||
$(BIN_DIR) \
|
||||
$(LST_DIR)
|
||||
|
||||
VPATH := $(SRC_DIR)
|
||||
|
||||
|
||||
.PHONY: all clean clean_all dbgsrv flash launchgdb rebuild test
|
||||
|
||||
|
||||
all: $(LIBCTBOARD) $(MKDIR) $(BIN) $(FLAGS_FILE)
|
||||
|
||||
|
||||
flash: $(MKDIR) $(BIN)
|
||||
-$(OCD) -f $(OCD_CONFIG) \
|
||||
-c "program $(BIN) verify exit 0x08000000"
|
||||
|
||||
|
||||
dbgsrv: flash
|
||||
-$(OCD) -f $(OCD_CONFIG) \
|
||||
-c "gdb_port 4500" \
|
||||
-c "init; reset run;"
|
||||
|
||||
|
||||
launchgdb: $(ELF) $(BIN) $(GDB_INIT)
|
||||
$(GDB) --command=$(GDB_INIT) $<
|
||||
|
||||
|
||||
$(MKDIR):
|
||||
mkdir -p $@
|
||||
|
||||
|
||||
#
|
||||
# The sections have to correspond with the
|
||||
# sections defined in the linker script who
|
||||
# are directed to be located in the flash
|
||||
# memory area.
|
||||
#
|
||||
$(BIN): $(ELF)
|
||||
$(COPY) --output-target=binary \
|
||||
-j .isr_vector \
|
||||
-j .stack \
|
||||
-j .heap \
|
||||
-j .text \
|
||||
-j .my_code \
|
||||
-j .my_const \
|
||||
-j .my_var \
|
||||
-j .rodata\
|
||||
-j .ARM.extab \
|
||||
-j .ARM \
|
||||
-j .preinit_array \
|
||||
-j .init_array \
|
||||
-j .fini_array \
|
||||
-j .data \
|
||||
-j .ccmram \
|
||||
-j .ARM.extab \
|
||||
-j .ARM \
|
||||
$< $@
|
||||
chmod -x $@
|
||||
@printf "\n"
|
||||
|
||||
|
||||
$(ELF): $(OBJ)
|
||||
$(CC) -o $@ $^ $(LINKER_FLAGS) -T $(LD_SCRIPT)
|
||||
chmod -x $@
|
||||
|
||||
|
||||
$(OBJ_DIR)/%.o: %.s
|
||||
$(CC) \
|
||||
$(AS_FLAGS) \
|
||||
-Wa,-a,-ad,-alms=$(LST_DIR)/$*.lst \
|
||||
-c $< \
|
||||
-o $@
|
||||
|
||||
|
||||
$(OBJ_DIR)/%.o: %.c
|
||||
$(CC) \
|
||||
$(C_FLAGS) \
|
||||
-Wa,-a,-ad,-alms=$(LST_DIR)/$*.lst \
|
||||
-c $< \
|
||||
-o $@
|
||||
|
||||
|
||||
$(LIBCTBOARD):
|
||||
echo "$(LIB_DIR)"
|
||||
make -C "$(LIB_DIR)" rebuild
|
||||
|
||||
|
||||
# this is to satisfy clangd (lsp client)
|
||||
$(FLAGS_FILE):
|
||||
@echo "$(C_FLAGS)" | sed 's/ /\n/g' > $@
|
||||
|
||||
|
||||
clean:
|
||||
-rm -rf $(MKDIR) $(FLAGS_FILE)
|
||||
|
||||
|
||||
clean_all:: clean
|
||||
|
||||
|
||||
rebuild: clean all
|
||||
|
||||
|
||||
Reference in New Issue
Block a user