default: all

CC = arm-linux-gnueabihf-g++ -ggdb
LINK_TARGET = $(OBJ_DIR)udp_app
DEPEND_OPTS = -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -MT"$(@:%.o=%.d)"
SRC_DIR = ./src/
OBJ_DIR = ./obj/
OBJS = \
	$(OBJ_DIR)delay.o \
	$(OBJ_DIR)platform.o \
	$(OBJ_DIR)gpio.o \
	$(OBJ_DIR)robotNav.o \
  $(OBJ_DIR)udp.o \
  $(OBJ_DIR)hostname.o \
	$(OBJ_DIR)main.o
############################
# List of dependency files
C_DEPS = \
  $(OBJ_DIR)delay.d \
  $(OBJ_DIR)platform.d \
	$(OBJ_DIR)gpio.d \
	$(OBJ_DIR)robotNav.d \
  $(OBJ_DIR)udp.d \
  $(OBJ_DIR)hostname.d \
  $(OBJ_DIR)main.d

############################
# Include generated dependency files (only if not clean target)
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif

all: $(LINK_TARGET)
	@echo All done!

clean:
	-@rm $(LINK_TARGET)
	-@rm $(OBJS)
	-@rm $(C_DEPS)
	@echo Clean done!

############################
# Pattern rule to compile a file	
# $@ matches the target
# $< matches the first dependent
$(OBJ_DIR)%.o: $(SRC_DIR)%.c
	$(CC) $(DEPEND_OPTS) -g3 -c "$<" -o "$@" 

$(LINK_TARGET): $(OBJS)
	$(CC) $(OBJS) -ggdb -o $@
# -lgpiod
# if gpiod not found:
#   sudo apt install libgpiod
#   sudo apt install libgpiod-dev
