#!/usr/bin/env make

SRC_DIR  := .
OBJ_DIR  := obj
LDFLAGS  := -r
CPPFLAGS :=
CXXFLAGS := --std=c++14

CXXFLAGS += -MMD -MP
MODULESC := $(wildcard $(SRC_DIR)/*.c)
MODULESI := $(SRC_DIR)/curve-specific.inc
OBJECTSC := $(MODULESC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
OBJECTSI := $(MODULESI:$(SRC_DIR)/%.inc=$(OBJ_DIR)/%.o)
OBJECTS  := $(OBJECTSC) $(OBJECTSI)

libuECC.o: $(OBJECTS)
	ld $(LDFLAGS) -o $@ $^

$(OBJECTSC): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	@mkdir -p $(@D)
	@g++ $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

$(OBJECTSI): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.inc
	@mkdir -p $(@D)
	@g++ -x c $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

-include $(OBJECTS:.o=.d)
