# This software is licensed by the MIT License, see LICENSE file
#                                Copyright © 2022 Gregory Lirent

BUILD_PATH  ?= ./bin
LIB_NAME     = unic

CC    = clang
MKDIR = mkdir -p
RMRF  = rm -rf
AR    = ar crs
CP    = cp

c_objects = $(addsuffix .o,$(addprefix $(2),$(notdir $(basename $(wildcard $(1)*.c)))))

$(BUILD_PATH)/obj/%.o: CFLAGS := $(CFLAGS) -DNDEBUG -O2 -c
$(BUILD_PATH)/lib$(LIB_NAME).a: $(addprefix $(BUILD_PATH)/obj/,$(call c_objects,./,libunic-))
$(BUILD_PATH)/lib$(LIB_NAME)-alt.a: $(addprefix $(BUILD_PATH)/obj/,$(call c_objects,./,libunic-))

$(BUILD_PATH)/lib$(LIB_NAME).a: $(addprefix $(BUILD_PATH)/obj/,$(call c_objects,./case_switch/,libunic-case-))
$(BUILD_PATH)/lib$(LIB_NAME)-alt.a: $(addprefix $(BUILD_PATH)/obj/,$(call c_objects,./case_switch/alt/,libunic-case-alt-))

build: $(BUILD_PATH)/lib$(LIB_NAME).a
build-alt: $(BUILD_PATH)/lib$(LIB_NAME)-alt.a

clean:
	$(RMRF) $(BUILD_PATH)

$(BUILD_PATH)/obj/libunic-%.o: ./%.c | $(BUILD_PATH)/obj/
	$(CC) $^ -o $@ $(CFLAGS)

$(BUILD_PATH)/obj/libunic-case-alt-%.o: ./case_switch/alt/%.c | $(BUILD_PATH)/obj/
	$(CC) $^ -o $@ $(CFLAGS)

$(BUILD_PATH)/obj/libunic-case-%.o: ./case_switch/%.c | $(BUILD_PATH)/obj/
	$(CC) $^ -o $@ $(CFLAGS)

%.a:
	$(AR) $@ $^

$(BUILD_PATH)/:
	$(MKDIR) $(BUILD_PATH)/

$(BUILD_PATH)/obj/: | $(BUILD_PATH)/
	$(MKDIR) $(BUILD_PATH)/obj/
