CC = clang
CFLAGS = -Wall -Wextra -g -std=c11
COMMON_SRCS = forth_core.c forth_dict.c forth_words.c forth_interp.c main.c

HOSTED_SRCS = $(COMMON_SRCS) platform_hosted.c
FREESTANDING_SRCS = $(COMMON_SRCS) platform_freestanding.c

TARGET = forth
FREESTANDING_TARGET = forth_freestanding

all: $(TARGET)

$(TARGET): $(HOSTED_SRCS) forth.h
	$(CC) $(CFLAGS) -D_POSIX_C_SOURCE=200809L -o $@ $(HOSTED_SRCS)

$(FREESTANDING_TARGET): $(FREESTANDING_SRCS) forth.h
	$(CC) $(CFLAGS) -ffreestanding -nostdlib -fno-stack-protector -o $@ $(FREESTANDING_SRCS)

clean:
	rm -f $(TARGET) $(FREESTANDING_TARGET)

.PHONY: all clean
