#CC = gcc
CFLAGS = -std=c11
CFLAGS = -g
#CFLAGS += -Werror
CFLAGS += -Wall
CFLAGS += -pedantic-errors
CFLAGS += -Wextra
CFLAGS += -Wpedantic


TOOLCHAIN := aarch64-none-linux-gnu-
TPATH := /home/telecom/emb/gcc-aarch64/bin/
LPATH := /home/telecom/emb/gcc-aarch64/aarch64-none-linux-gnu/libc/
ARCH := -march=armv8-a -mcpu=cortex-a72 --sysroot=$(LPATH)

SRCS = main.c network.c uart.c protocol.c
OBJS = $(SRCS:.c=.o)
HEADERS = $(SRCS:.c=.h)
OBJS1 = $(SRCS:.c=.o_cross)
EXECUTABLE = mc03_uart
CROSS_EXECUTABLE = mc03_uart_arm

.PHONY: all clean run

all: $(EXECUTABLE)

cross: $(CROSS_EXECUTABLE)

$(EXECUTABLE): $(OBJS)
	$(CC) $(CFLAGS) -o $@ $^

%.o: %.c %.h
	$(CC) $(CFLAGS) -c  $< -o $@

$(CROSS_EXECUTABLE): $(OBJS1)
	$(TPATH)$(TOOLCHAIN)$(CC) $(CFLAGS) $(ARCH) -o $@ $^

main.o_cross: main.c
	$(TPATH)$(TOOLCHAIN)$(CC) $(CFLAGS) $(ARCH) -c  $< -o $@
%.o_cross: %.c %.h
	$(TPATH)$(TOOLCHAIN)$(CC) $(CFLAGS) $(ARCH) -c  $< -o $@

clean:
	rm -rf *.o
	rm -rf *.o_cross
	rm -rf $(EXECUTABLE)
	rm -rf $(CROSS_EXECUTABLE)

run: all
	./mc03_uart

