PROG ?= example
SOURCES ?= ../../mongoose.c main.c packed_fs.c
CFLAGS ?= -I../.. -DMG_ENABLE_PACKED_FS=1 -DMG_ENABLE_LINES=1 $(EXTRA)
FILES_TO_EMBED ?= $(wildcard web_root/*)
ROOT ?= $(realpath $(CURDIR)/../../..)
DOCKER ?= docker run --rm -e Tmp=. -e WINEDEBUG=-all -v $(ROOT):$(ROOT) -w $(CURDIR)
VC98 ?= $(DOCKER) mdashnet/vc98 wine
MINGW ?= $(DOCKER) mdashnet/mingw

all: $(PROG)
	$(RUN) ./$(PROG)

$(PROG): $(SOURCES) $(FILES_TO_EMBED)
	$(CC) ../../test/pack.c -o pack
	./pack $(FILES_TO_EMBED) > packed_fs.c
	$(CC) -W -Wall -Wextra -O0 -g3 $(CFLAGS) -o $(PROG) $(SOURCES)


mingw: $(SOURCES) $(FILES_TO_EMBED)
	$(MINGW) i686-w64-mingw32-gcc $(CFLAGS) ../../test/pack.c -o pack.exe
	$(MINGW) wine cmd /c 'pack.exe $(FILES_TO_EMBED) > packed_fs.c'
	$(MINGW) i686-w64-mingw32-gcc $(CFLAGS) $(SOURCES) -lws2_32 -o $(PROG).exe
	$(MINGW) wine $(PROG).exe

vc98: $(SOURCES) $(FILES_TO_EMBED)
	$(VC98) cl.exe /nologo $(CFLAGS) ../../test/pack.c /Fepack.exe
	$(VC98) cmd /c 'pack.exe $(FILES_TO_EMBED) > packed_fs.c'
	$(VC98) cl.exe /nologo /O2 $(CFLAGS) $(SOURCES) /Fe$(PROG).exe
	$(VC98) $(PROG).exe

clean:
	rm -rf $(PROG) *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb log.txt pack

.PHONY: compress expand gzipped plain all

gzipped: compress
	$(MAKE) all

plain: expand
	$(MAKE) all

compress:
	for file in $(FILES_TO_EMBED) ; do \
		gzip -q $$file ; \
	done

expand:
	for file in $(FILES_TO_EMBED) ; do \
		gunzip -q $$file ; \
	done

