C_SRC := $(wildcard *.c) C_EXE := $(C_SRC:.c=) HS_SRC := $(wildcard *.hs) HS_EXE := $(HS_SRC:.hs=) OBJDIR := .obj .PHONY: all clean all: $(C_EXE) $(HS_EXE) clean: rm -rf $(C_EXE) $(HS_EXE) $(OBJDIR) $(C_EXE): %: %.c gcc -Wall -Wextra -std=c23 -O2 -o $@ $< $(HS_EXE): %: %.hs | $(OBJDIR) ghc -Wall -hidir $(OBJDIR) -odir $(OBJDIR) -o $@ $< $(OBJDIR): mkdir $(OBJDIR)