MIX = mix
CFLAGS = -O2 -Wall -Wextra -Wno-unused-parameter -fPIC

ERL_INCLUDE = $(shell erl -eval 'io:format("~s", [lists:concat([code:root_dir(), "/erts-", erlang:system_info(version), "/include"])])' -s init stop -noshell)

UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
	LDFLAGS = -dynamiclib -undefined dynamic_lookup
	SO_EXT = .so
else
	LDFLAGS = -shared
	SO_EXT = .so
endif

PRIV = priv
BUILD = $(MIX_BUILD_PATH)/lib/gesttalt/priv
SRC = c_src
ZIG_LIB = ../../zig-out/lib

NIF_SRC = $(SRC)/gesttalt_nif.c
NIF_SO = $(PRIV)/gesttalt_nif$(SO_EXT)

all: $(PRIV) $(NIF_SO)

$(PRIV):
	mkdir -p $(PRIV)

$(NIF_SO): $(NIF_SRC)
ifeq ($(ELIXIR_MAKE_SKIP),1)
	@echo "ELIXIR_MAKE_SKIP=1; skipping NIF build"
	@exit 0
endif
	$(CC) $(CFLAGS) -I$(ERL_INCLUDE) $(NIF_SRC) \
		$(ZIG_LIB)/libgesttalt_ffi.a \
		$(LDFLAGS) -o $(NIF_SO)

clean:
	rm -rf $(PRIV)

.PHONY: all clean
