CXX      ?= g++
CXXFLAGS ?= -std=c++11 -Wall -Wextra -g
SDLFLAGS := $(shell sdl2-config --cflags --libs) -lSDL2_ttf -lSDL2_image

EMSDK_DIR := /opt/emscripten

PLOT_SRC := plot.cpp

SRC ?= demo.cpp
OUT ?= demo

all:
	$(CXX) $(CXXFLAGS) -o $(OUT) $(SRC) $(PLOT_SRC) $(SDLFLAGS)

web:
	bash -lc 'cd $(EMSDK_DIR) && . ./emsdk_env.sh && cd "$(CURDIR)" && \
	em++ $(CXXFLAGS) -O2 \
		-o $(OUT).js $(SRC) $(PLOT_SRC) \
		-sUSE_SDL=2 \
		-sUSE_SDL_TTF=2 \
		-sUSE_SDL_IMAGE=2 \
		-sSDL2_IMAGE_FORMATS="[\"png\"]" \
		-sINITIAL_MEMORY=128MB \
		-sALLOW_MEMORY_GROWTH=0'

# Compile the original source with its main renamed; preserve the original demo target.
plot-server: plot_server.cpp plot.cpp plot.hpp
	$(CXX) $(CXXFLAGS) -Dmain=plot_original_main -c plot.cpp -o plot_server_lib.o
	$(CXX) $(CXXFLAGS) -o plot-server plot_server.cpp plot_server_lib.o $(SDLFLAGS)

clean:
	rm -f $(OUT) *.o
