CC = gcc
CFLAGS = -Wall -Wno-unused-result
ifeq ($(OS),Windows_NT)
LIBS = -l pthread -l m -L.
else
LIBS = -l pthread -l m -L. -l dx2lib
endif

SUFFIX = .c
SRCDIR = .
INCDIR = .

SRCS  = $(wildcard $(SRCDIR)/*$(SUFFIX))
TARGETS  = $(notdir $(basename $(SRCS)))

define MAKEALL
$(1):$(1)$(SUFFIX)
ifeq ($(OS),Windows_NT)
ifeq ($(ENV_WINX64),1)
	$(CC) -I$(INCDIR) $(CFLAGS) dx2lib_x64.dll $(SRCDIR)/$(1)$(SUFFIX) $(LIBS) -o $(1).exe
else
	$(CC) -I$(INCDIR) $(CFLAGS) dx2lib_x32.dll $(SRCDIR)/$(1)$(SUFFIX) $(LIBS) -o $(1).exe
endif
else
	$(CC) -I$(INCDIR) $(CFLAGS) $(SRCDIR)/$(1)$(SUFFIX) $(LIBS) -o $(1).out
endif
endef

.PHONY: all
all: $(TARGETS)
$(foreach var,$(TARGETS),$(eval $(call MAKEALL,$(var))))

#make clean
.PHONY: clean
clean: 
ifeq ($(OS),Windows_NT)
	$(RM) $(wildcard *.exe) $(wildcard *.bak) $(wildcard *.BAK)
else
	$(RM) *.out *.bak *.BAK
endif
