#define variables

#for libopencm3
OPENCM3_DIR := ../libopencm3
LIBDIR       = $(OPENCM3_DIR)/lib
LDSCRIPT     = stm32/f1/stm32f103x8.ld
LIBNAME	     = opencm3_stm32f1

#for the compilation
C_FLAGS	     = -msoft-float -mthumb -mcpu=cortex-m3 -Os -DSTM32F1 --specs=nosys.specs 
INC_FLAGS    += -I$(OPENCM3_DIR)/include -I./inc

#for the tools
PREFIX		?= arm-none-eabi
CC		:= $(PREFIX)-gcc
CXX		:= $(PREFIX)-g++
LD		:= $(PREFIX)-gcc
AR		:= $(PREFIX)-ar
AS		:= $(PREFIX)-as
SIZE		:= $(PREFIX)-size
OBJCOPY		:= $(PREFIX)-objcopy
OBJDUMP		:= $(PREFIX)-objdump
GDB	        := gdb-multiarch
LHPLIB_FLAGS    ?= 
STFLASH         := st-flash

PROJECT         = liblhp

SRC_DIR = ./src
INC_DIR = ./inc
OBJ_DIR = ./build

SRCS    = $(wildcard $(SRC_DIR)/*.c)
OBJS    = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS))

# tells make that these don't produce a file
.PHONY: clean flash lib $(PROJECT)

$(PROJECT) : $(PROJECT).a

clean :
	@rm -r *.a $(OBJ_DIR)

ultraclean:
	$(MAKE) -C $(OPENCM3_DIR) clean
	@rm *.bin *.hex *.elf *.o

lib: $(OBJS)
	echo $(SRC_DIR)/*.c
	$(MAKE) -C $(OPENCM3_DIR) TARGETS=stm32/f1 -j `nproc`

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
	$(CC) $(C_FLAGS) $(INC_FLAGS) $(LHPLIB_FLAGS) -c $< -o $@

$(OBJ_DIR):
	mkdir $@


$(PROJECT).a : $(OBJS) lib
	$(AR) rcs $(PROJECT).a $(OBJS)




