2019-12-30 16:31:03 +01:00
|
|
|
#!/usr/bin/make -f
|
|
|
|
## ---
|
|
|
|
## Project: Vhex - On-calc debugger
|
|
|
|
## Author: yann.magnin@epitech.eu
|
|
|
|
## ---
|
2020-02-05 21:09:39 +01:00
|
|
|
include ../../../global.mk
|
2019-12-30 16:31:03 +01:00
|
|
|
|
|
|
|
##---
|
|
|
|
## Static variables
|
|
|
|
##--
|
2020-02-05 21:09:39 +01:00
|
|
|
HEADER := -I../../../include -I../../../include/user
|
2020-03-15 00:56:31 +01:00
|
|
|
LIBS := -L../../lib/ -lunistd -lstdio -lstring -ldisplay -lgcc
|
2020-02-05 21:09:39 +01:00
|
|
|
BUILD := ../../../build/user/test
|
2020-02-27 10:11:37 +01:00
|
|
|
DEBUG := ../../../debug_bin
|
2020-02-05 21:09:39 +01:00
|
|
|
OUTPUT := ../../../output
|
2019-12-30 16:31:03 +01:00
|
|
|
|
2020-02-05 21:09:39 +01:00
|
|
|
NAME := test
|
2019-12-30 16:31:03 +01:00
|
|
|
EXEC := $(OUTPUT)/$(NAME).elf
|
|
|
|
LDFLAG := -T $(NAME).ld
|
|
|
|
MEMORY_MAP := $(DEBUG)/$(NAME).map
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##---
|
|
|
|
## Automated variables
|
|
|
|
##---
|
|
|
|
SRC :=
|
2020-02-05 21:09:39 +01:00
|
|
|
DIRECTORY := $(shell find . -not -path "*/\.*" -type d)
|
2019-12-30 16:31:03 +01:00
|
|
|
# Get all source files
|
|
|
|
$(foreach path,$(DIRECTORY),$(eval \
|
|
|
|
SRC += $(wildcard $(path)/*.c) \
|
|
|
|
$(wildcard $(path)/*.S) \
|
|
|
|
$(wildcard $(path)/*.s) \
|
|
|
|
))
|
|
|
|
# Geneate all object files
|
2020-02-05 21:09:39 +01:00
|
|
|
OBJ := $(patsubst ._%,$(BUILD)/%.o,$(subst /,_,$(subst src/,,$(basename $(SRC)))))
|
2019-12-30 16:31:03 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##---
|
|
|
|
## General rules
|
|
|
|
##---
|
|
|
|
all: | $(BUILD) $(DEBUG) $(EXEC)
|
|
|
|
|
|
|
|
$(EXEC): $(OBJ)
|
2020-03-15 00:56:31 +01:00
|
|
|
$(CC) -fPIC -Wl,-M $(LDFLAG) $(CFLAGS) -o $(DEBUG)/$(NAME).elf.big $(OBJ) $(HEADER) $(LIBS) > $(MEMORY_MAP)
|
2019-12-30 16:31:03 +01:00
|
|
|
$(OBJCOPY) -S $(DEBUG)/$(NAME).elf.big $@
|
|
|
|
rm -f $(DEBUG)/$(NAME).elf.big
|
|
|
|
|
|
|
|
$(BUILD) $(DEBUG):
|
|
|
|
@ printf "Create $(blue)$@$(nocolor) directory\n"
|
|
|
|
@ mkdir -p $@
|
|
|
|
|
|
|
|
install: $(EXEC)
|
|
|
|
sudo p7 send --force -d VHEX $^
|
|
|
|
|
|
|
|
check:
|
|
|
|
@ echo 'src: $(SRC)'
|
|
|
|
@ echo 'obj: $(OBJ)'
|
|
|
|
@ echo 'directory: $(DIRECTORY)'
|
|
|
|
|
|
|
|
asm:
|
2020-01-01 14:19:18 +01:00
|
|
|
@ $(OBJDUMP) -D $(EXEC) | less
|
2019-12-30 16:31:03 +01:00
|
|
|
|
|
|
|
map:
|
|
|
|
@ cat $(MEMORY_MAP) | less
|
|
|
|
|
|
|
|
sec:
|
2020-01-01 14:19:18 +01:00
|
|
|
@ $(OBJDUMP) -h $(EXEC)
|
2019-12-30 16:31:03 +01:00
|
|
|
|
|
|
|
|
|
|
|
##---
|
|
|
|
## Automated rules
|
|
|
|
##---
|
|
|
|
define rule-src
|
2020-02-05 21:09:39 +01:00
|
|
|
$(patsubst ._%,$(BUILD)/%.o,$(subst /,_,$(subst src/,,$(basename $1)))): $1
|
2019-12-30 16:31:03 +01:00
|
|
|
@ printf "compiling $(white)$$<$(nocolor)..."
|
2020-01-01 14:19:18 +01:00
|
|
|
@ $(CC) -fPIC $(CFLAGS) -o $$@ -c $$< $(HEADER) -lgcc
|
2019-12-30 16:31:03 +01:00
|
|
|
@ printf "$(green)[ok]$(nocolor)\n"
|
|
|
|
endef
|
|
|
|
|
|
|
|
$(foreach source,$(SRC),$(eval \
|
|
|
|
$(call rule-src,$(source))) \
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##---
|
|
|
|
## Cleaning rules
|
|
|
|
##---
|
|
|
|
clean:
|
|
|
|
rm -rf $(BUILD)
|
|
|
|
rm -rf $(DEBUG)
|
|
|
|
|
|
|
|
fclean: clean
|
|
|
|
rm -f $(EXEC)
|
|
|
|
|
|
|
|
re: fclean all
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.PHONY: re fclean clean all install
|