CC ?= gcc
CFLAGS ?= -O3 -march=native -std=c11 -Wall -Wextra -pedantic -Iinclude
LDFLAGS ?= -lm -pthread -lz

SRC := src/main.c src/worldgen.c src/noise.c
OBJ := $(SRC:.c=.o)

BIN_DIR := bin
TARGET := $(BIN_DIR)/worldgen
SCAN_TARGET := $(BIN_DIR)/worldgen-scan

all: $(TARGET)

$(TARGET): $(OBJ) | $(BIN_DIR)
	$(CC) $(CFLAGS) $(OBJ) -o $@ $(LDFLAGS)

$(SCAN_TARGET): tools/worldgen_scan.o src/worldgen.o src/noise.o | $(BIN_DIR)
	$(CC) $(CFLAGS) tools/worldgen_scan.o src/worldgen.o src/noise.o -o $@ $(LDFLAGS)

$(BIN_DIR):
	mkdir -p $(BIN_DIR)

clean:
	rm -f $(OBJ) tools/worldgen_scan.o $(TARGET) $(SCAN_TARGET)

scan: $(SCAN_TARGET)

.PHONY: all clean scan
