ifeq ($(OS),Windows_NT)
	PROJECTNAME=GetHome
	PROJECTEXT=.exe
	LIBS=-luser32 -lgdi32 -lopengl32 -lgdiplus -lShlwapi -lstdc++fs
	LFLAGS=-s -static
	ODIR=obj/windows
else
	PROJECTNAME=GetHome
	PROJECTEXT=
	LIBS=-lm -lX11 -lGL -lpthread -lpng -lstdc++fs
	LFLAGS=-s -static-libstdc++
	ODIR=obj/linux-x86_64
endif

IDIR=include
SDIR=src

CC=g++

CFLAGS=-I./$(IDIR) -std=c++17

_OBJ = main.o
OBJ = $(patsubst %, $(ODIR)/%,$(_OBJ))

$(ODIR)/%.o: $(SDIR)/%.cpp
	$(CC) -c -o $@ $< $(CFLAGS)

bin/$(PROJECTNAME)$(PROJECTEXT): $(OBJ)
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) $(LFLAGS)

.PHONY: clean

clean:
ifeq ($(OS),Windows_NT)
	del obj\windows\*.o
else
	rm -f obj/linux-x86_64/*.o
endif
	
ifneq ($(OS),Windows_NT)


.PHONE: pack
pack:
	rm -f assets/resource.pak
	olcPack assets/resource.pak "moros rocks" add assets/*.png assets/outdoors.json

.PHONY: package-clean
package-clean:
	rm -rf dist

.PHONY: package
package:
	# create assets directory for linux
	mkdir -p dist/linux/$(PROJECTNAME)/assets
	
	# create assets directory for windows
	mkdir -p dist/windows/$(PROJECTNAME)/assets

	# copy assets to linux assets directory
	cp assets/resource.pak dist/linux/$(PROJECTNAME)/assets/

	# copy assets to windows assets directory
	cp assets/resource.pak dist/windows/$(PROJECTNAME)/assets/


	# copy linux binary
	cp bin/$(PROJECTNAME) dist/linux/$(PROJECTNAME)/
	
	# copy windows binary
	cp bin/$(PROJECTNAME).exe dist/windows/$(PROJECTNAME)/

	# ZIP linux
	cd dist/linux; zip -r "../$(PROJECTNAME) (Linux)" .
	
	# ZIP windows
	cd dist/windows; zip -r "../$(PROJECTNAME) (Windows)" .
endif