EXE = main sdl2ibdir = sdllib ifndef target target=linux endif ifeq ($(target),windows) CC=x86_64-w64-mingw32-gcc -DWIN32 -g SDL_INCLUDE = -Dmain=SDL_main -Lsdllib -lSDL2main -lSDL2main -lSDL2_mixer -lSDL2_ttf -lSDL2 -lmingw32 -lSDL2main -lSDL2 -mwindows -Wl,-static -lpthread -lm CCFLAGS=$(SDL_INCLUDE) -O2 else ifeq ($(target),web) CC=emcc SDL_INCLUDE= -s USE_SDL=2 -s USE_SDL_MIXER=2 -s USE_SDL_TTF=2 -s FULL_ES3=1 --preload-file "TerminusTTF.ttf" CCFLAGS=$(SDL_INCLUDE) -O2 else CC=gcc -D__linux__ SDL_INCLUDE= -lSDL2 -lSDL2_ttf -lSDL2_mixer -lm CCFLAGS=$(SDL_INCLUDE) -O3 endif endif ifdef debug CC += -fsanitize=address -g -ggdb -fno-omit-frame-pointer -Wall endif .PHONY: default .PHONY: all .PHONY: run .PHONY: dist .PHONY: web default: all dist: all mkdir -p dist mkdir -p dist/windows cp build/main.exe dist/windows cp build/SDL2.dll dist/windows cp README.md dist/windows cd dist && zip -r windows.zip windows distlin: all mkdir -p dist mkdir -p dist/linux cp build/main dist/linux cp README.md dist/linux cd dist && zip -r linux.zip linux run: all ./main all: $(EXE) web: $(EXE) $(CC) -o build/index.html build/main.o build/vect.o build/game.o build/draw.o build/environment.o build/controlscheme.o build/colours.o build/datatypes.o build/audio.o $(CCFLAGS) $(EXE): prebuild build/main.o build/vect.o build/game.o build/draw.o build/controlscheme.o build/environment.o build/colours.o build/datatypes.o build/audio.o cd build && $(CC) -o $(EXE) main.o vect.o game.o draw.o environment.o controlscheme.o colours.o datatypes.o audio.o $(CCFLAGS) build/colours.o: c-colours/colours.c c-colours/colours.h $(CC) -c c-colours/colours.c -o build/colours.o $(CCFLAGS) build/datatypes.o: datastructures/datatypes.c datastructures/datatypes.h $(CC) -c datastructures/datatypes.c -o build/datatypes.o $(CCFLAGS) build/main.o: src/main.c $(CC) -c src/main.c -o build/main.o $(CCFLAGS) build/game.o: src/game.c src/game.h $(CC) -c src/game.c -o build/game.o $(CCFLAGS) build/draw.o: src/draw.c src/draw.h $(CC) -c src/draw.c -o build/draw.o $(CCFLAGS) build/vect.o: src/vect.c src/vect.h $(CC) -c src/vect.c -o build/vect.o $(CCFLAGS) build/controlscheme.o: src/controlscheme.c src/controlscheme.h $(CC) -c src/controlscheme.c -o build/controlscheme.o $(CCFLAGS) build/environment.o: src/environment.c src/environment.h $(CC) -c src/environment.c -o build/environment.o $(CCFLAGS) build/audio.o: src/audio.c src/audio.h $(CC) -c src/audio.c -o build/audio.o $(CCFLAGS) clean: rm build/*.o prebuild: mkdir -p build ln -srf datastructures src/ ln -srf c-colours src/