TARGET_EXEC:=smw

SRCS:=$(wildcard smb1/*.c smbll/*.c src/*.c src/snes/*.c) third_party/gl_core/gl_core_3_1.c
OBJS:=$(SRCS:%.c=%.o)
PYTHON:=/usr/bin/env python3
CFLAGS:=$(if $(CFLAGS),$(CFLAGS),-O2 -fno-strict-aliasing )
CFLAGS:=${CFLAGS} $(shell sdl2-config --cflags) -DSYSTEM_VOLUME_MIXER_AVAILABLE=0 -I.

ifeq (${OS},Windows_NT)
    SDLFLAGS:=-Wl,-Bstatic $(shell sdl2-config --static-libs)
else
    SDLFLAGS:=$(shell sdl2-config --libs) -lm
endif

.PHONY: all clean clean_obj clean_gen test
all: $(TARGET_EXEC) smw_assets.dat
$(TARGET_EXEC): $(OBJS) $(RES)
	$(CC) $^ -o $@ $(LDFLAGS) $(SDLFLAGS)
%.o : %.c
	$(CC) -c $(CFLAGS) $< -o $@
smw_assets.dat:
	$(PYTHON) assets/restool.py
clean: clean_obj clean_gen
clean_obj:
	@$(RM) $(OBJS) $(TARGET_EXEC)
clean_gen:
	@$(RM) $(RES) smw_assets.dat
	@rm -rf assets/__pycache__
tests/headless: tests/headless.c $(filter-out src/main.o,$(OBJS))
	$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(SDLFLAGS)
test: tests/headless smw_assets.dat
	./tests/headless
tests/record: tests/record.c tests/headless.c $(filter-out src/main.o,$(OBJS))
	$(CC) $(CFLAGS) tests/record.c $(filter-out src/main.o,$(OBJS)) -o $@ $(LDFLAGS) $(SDLFLAGS)
tests/showcase: tests/showcase.c tests/record.c tests/headless.c $(filter-out src/main.o,$(OBJS))
	$(CC) $(CFLAGS) tests/showcase.c $(filter-out src/main.o,$(OBJS)) -o $@ $(LDFLAGS) $(SDLFLAGS)
tests/music: tests/music.c tests/headless.c $(filter-out src/main.o,$(OBJS))
	$(CC) $(CFLAGS) tests/music.c $(filter-out src/main.o,$(OBJS)) -o $@ $(LDFLAGS) $(SDLFLAGS)
