2019-06-10 02:14:49 +02:00
|
|
|
#!/usr/bin/make -f
|
2019-12-02 16:48:36 +01:00
|
|
|
## ---
|
2019-12-06 23:45:04 +01:00
|
|
|
## Project: Vhex - On-calc debugger
|
|
|
|
## Author: yann.magnin@epitech.eu
|
2019-12-02 16:48:36 +01:00
|
|
|
## ---
|
|
|
|
|
|
|
|
##---
|
|
|
|
## Static variables
|
|
|
|
##--
|
|
|
|
HEADER := include
|
|
|
|
BUILD := build
|
|
|
|
DEBUG := debug
|
|
|
|
|
|
|
|
NAME := vhex
|
|
|
|
EXEC := $(NAME).g1a
|
|
|
|
LDFLAG := -T $(NAME).ld
|
|
|
|
MEMORY_MAP := $(DEBUG)/$(NAME).map
|
|
|
|
ICON := icon.bmp
|
|
|
|
|
|
|
|
|
|
|
|
COMPILER := sh3eb-elf-
|
|
|
|
CC := $(COMPILER)gcc
|
|
|
|
OBJCOPY := $(COMPILER)objcopy
|
2019-12-06 23:45:04 +01:00
|
|
|
OBJDUMP := $(COMPILER)objdump
|
2019-12-02 16:48:36 +01:00
|
|
|
WRAPPER := g1a-wrapper
|
|
|
|
CFLAGS := -Werror -Wall -W -Wextra -std=c18 -m3 -mb -mrenesas \
|
|
|
|
-ffreestanding -nostdlib -fstrict-volatile-bitfields \
|
|
|
|
-Wno-unused-const-variable -Wno-unused-function \
|
|
|
|
-Wno-unused-variable -Wno-unused-but-set-variable \
|
|
|
|
-Wno-unused-parameter
|
|
|
|
|
|
|
|
|
|
|
|
red := \033[1;31m
|
|
|
|
green := \033[1;32m
|
|
|
|
blue := \033[1;34m
|
|
|
|
white := \033[1;37m
|
|
|
|
nocolor := \033[1;0m
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##---
|
|
|
|
## Automated variables
|
|
|
|
##---
|
2019-06-10 02:14:49 +02:00
|
|
|
SRC :=
|
2019-12-02 16:48:36 +01:00
|
|
|
DIRECTORY := $(shell find src -not -path "*/\.*" -type d)
|
|
|
|
# Get all source files
|
2019-06-10 02:14:49 +02:00
|
|
|
$(foreach path,$(DIRECTORY),$(eval \
|
2019-12-02 16:48:36 +01:00
|
|
|
SRC += $(wildcard $(path)/*.c) \
|
|
|
|
$(wildcard $(path)/*.S) \
|
|
|
|
$(wildcard $(path)/*.s) \
|
|
|
|
))
|
|
|
|
# Geneate all object files
|
|
|
|
OBJ := $(patsubst %,$(BUILD)/%.o,$(subst /,_,$(subst src/,,$(basename $(SRC)))))
|
2019-06-10 02:14:49 +02:00
|
|
|
|
|
|
|
|
2019-12-02 16:48:36 +01:00
|
|
|
|
|
|
|
|
|
|
|
##---
|
|
|
|
## General rules
|
|
|
|
##---
|
|
|
|
all: | $(BUILD) $(DEBUG) $(EXEC)
|
2019-06-10 02:14:49 +02:00
|
|
|
|
|
|
|
$(EXEC): $(OBJ)
|
2019-12-02 16:48:36 +01:00
|
|
|
$(CC) -Wl,-M $(LDFLAG) $(CFLAGS) -o $(DEBUG)/$(NAME).elf $(OBJ) -I $(HEADER) -lgcc > $(MEMORY_MAP)
|
|
|
|
$(OBJCOPY) -R .comment -R .bss -O binary $(DEBUG)/$(NAME).elf $(DEBUG)/$(NAME).bin
|
|
|
|
$(WRAPPER) $(DEBUG)/$(NAME).bin -o $@ -i $(ICON)
|
2019-06-10 02:14:49 +02:00
|
|
|
|
2019-12-02 16:48:36 +01:00
|
|
|
$(BUILD) $(DEBUG):
|
2019-06-10 02:14:49 +02:00
|
|
|
@ printf "Create $(blue)$@$(nocolor) directory\n"
|
|
|
|
@ mkdir -p $@
|
|
|
|
|
2019-12-02 16:48:36 +01:00
|
|
|
install: $(EXEC)
|
|
|
|
sudo p7 send --force $^
|
2019-06-10 02:14:49 +02:00
|
|
|
|
2019-12-02 16:48:36 +01:00
|
|
|
check:
|
|
|
|
@ echo 'src: $(SRC)'
|
|
|
|
@ echo 'obj: $(OBJ)'
|
|
|
|
@ echo 'directory: $(DIRECTORY)'
|
2019-06-10 02:14:49 +02:00
|
|
|
|
2019-12-06 23:45:04 +01:00
|
|
|
map:
|
|
|
|
@ $(OBJDUMP) -D $(DEBUG)/$(NAME).elf | less
|
2019-06-10 02:14:49 +02:00
|
|
|
|
2019-12-09 15:57:06 +01:00
|
|
|
bin:
|
|
|
|
@ cat $(MEMORY_MAP) | less
|
|
|
|
|
2019-06-10 02:14:49 +02:00
|
|
|
|
2019-12-02 16:48:36 +01:00
|
|
|
##---
|
|
|
|
## Automated rules
|
|
|
|
##---
|
2019-06-10 02:14:49 +02:00
|
|
|
define rule-src
|
2019-12-02 16:48:36 +01:00
|
|
|
$(patsubst %,$(BUILD)/%.o,$(subst /,_,$(subst src/,,$(basename $1)))): $1
|
2019-06-10 02:14:49 +02:00
|
|
|
@ printf "compiling $(white)$$<$(nocolor)..."
|
2019-12-02 16:48:36 +01:00
|
|
|
@ $(CC) $(CFLAGS) -o $$@ -c $$< -I $(HEADER) -lgcc
|
2019-06-10 02:14:49 +02:00
|
|
|
@ printf "$(green)[ok]$(nocolor)\n"
|
|
|
|
endef
|
|
|
|
|
|
|
|
$(foreach source,$(SRC),$(eval \
|
|
|
|
$(call rule-src,$(source))) \
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2019-12-02 16:48:36 +01:00
|
|
|
|
|
|
|
|
|
|
|
##---
|
|
|
|
## Cleaning rules
|
|
|
|
##---
|
2019-06-10 02:14:49 +02:00
|
|
|
clean:
|
|
|
|
rm -rf $(BUILD)
|
2019-12-02 16:48:36 +01:00
|
|
|
rm -rf $(DEBUG)
|
2019-06-10 02:14:49 +02:00
|
|
|
|
|
|
|
fclean: clean
|
|
|
|
rm -f $(EXEC)
|
|
|
|
|
2019-06-17 23:42:07 +02:00
|
|
|
re: fclean all
|
2019-06-10 02:14:49 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-12-02 16:48:36 +01:00
|
|
|
.PHONY: re fclean clean all install
|