.PHONY: all build clean lib

CXX = g++
WSL = wsl --shell-type login
EMXX = $(WSL) em++
EMAR = $(WSL) emar

CXXFLAGS = -std=c++20 -O2

SRC_FILES = ./src/main.cpp \
			./src/lib.cpp


LIB_FILES = ./src/lib.cpp

all: build-lib build 

run: build
	./bin/assetpacker.exe

build-lib:
	@mkdir -p bin
	@mkdir -p bin/include/asset_packer
	@cp -r ./src/include/* ./bin/include/asset_packer
	$(CXX) $(CXXFLAGS) -I./src/include -c $(LIB_FILES) -o ./bin/asset_packer.o
	ar rcs ./bin/libassetpacker.a ./bin/asset_packer.o

build-lib-web:
	@mkdir -p bin
	@mkdir -p bin/include/asset_packer
	@cp -r ./src/include/* ./bin/include/asset_packer
	$(EMXX) $(CXXFLAGS) -I./src/include -c $(LIB_FILES) -o ./bin/asset_packer.web.o
	$(EMAR) rcs ./bin/libassetpacker.web.a ./bin/asset_packer.web.o

build:
	@mkdir -p bin
	@cp -r ./asset/ ./bin/
	$(CXX) $(CXXFLAGS) $(SRC_FILES) -I./src/include -o ./bin/assetpacker.exe

compile_commands.json: clean
	@echo "Generating compile_commands.json..."
	bear -- $(MAKE)

clean: 
	@rm -r -f ./bin
	@rm -f compile_commands.json

test:
	@mkdir -p bin 
	@cp -r ./asset/ ./bin/stuff/
	$(CXX) $(CXXFLAGS) -I./src/include $(LIB_FILES) ./src/test.cpp -o ./bin/test.exe
	./bin/test.exe
	

