175 lines
4.8 KiB
Makefile
175 lines
4.8 KiB
Makefile
.PHONY: all build-gui build-game run-desktop clean web
|
|
|
|
CXX = g++
|
|
|
|
WSL = wsl --shell-type login
|
|
WEB_CXX = $(WSL) em++
|
|
# EMSCRIPTE_H_PATH = "//wsl.localhost/archlinux/home/shadow/dev/external/emsdk/upstream/emscripten/system/include/emscripten.h"
|
|
BROWSER = "C:\Program Files\Mozilla Firefox\firefox.exe"
|
|
# upstream/emscripten/system/include/emscripten.h
|
|
ASSETS = "data.dat"
|
|
|
|
|
|
LDFLAGS = -L./external/raylib/lib \
|
|
-L./external/box2d/build/src \
|
|
-L./external/asset_packer/bin \
|
|
|
|
WEB_LDFLAGS = -L./external/raylib-web/lib \
|
|
-L./external/asset_packer/bin \
|
|
-sUSE_GLFW=3 \
|
|
--preload-file $(ASSETS) \
|
|
--shell-file "./html/shell_custom.html"
|
|
|
|
LIBS = -lraylib -lwinmm -lgdi32 -lbox2d -lassetpacker
|
|
|
|
WEB_LIBS = -lraylib.web -lassetpacker.web
|
|
|
|
CXXFLAGS = -std=c++20 -O2 \
|
|
-MMD -MP
|
|
|
|
DEBUGFLAGS = -std=c++20 -g -O0
|
|
|
|
INCLUDES = -I./external/raylib/include \
|
|
-I./external/entt/single_include \
|
|
-I./src/include \
|
|
-I./external/imgui \
|
|
-I./external/rlImGui \
|
|
-I./external/box2d/include \
|
|
-I./external/nhlohmann_json_3.12.0/ \
|
|
-I./external/asset_packer/bin/include \
|
|
|
|
WEB_INCLUDES = -I./external/raylib-web/include \
|
|
-I./external/entt/single_include \
|
|
-I./src/include \
|
|
-I./external/imgui \
|
|
-I./external/rlImGui \
|
|
-I./external/box2d/include \
|
|
-I./external/nhlohmann_json_3.12.0/ \
|
|
-I./external/asset_packer/bin/include \
|
|
# -I./external/emscripten/include \
|
|
|
|
IMGUI_SRCS = ./external/imgui/imgui.cpp \
|
|
./external/imgui/imgui_demo.cpp \
|
|
./external/imgui/imgui_draw.cpp \
|
|
./external/imgui/imgui_tables.cpp \
|
|
./external/imgui/imgui_widgets.cpp \
|
|
|
|
IMGUI_BACKEND = ./external/rlImGui/rlImGui.cpp
|
|
|
|
|
|
|
|
SRC_FILES = ./src/asset.cpp \
|
|
./src/movement.cpp \
|
|
./src/player.cpp \
|
|
./src/fruit.cpp \
|
|
./src/render.cpp \
|
|
./src/scenes/scene.cpp \
|
|
./src/scenes/game_play_scene.cpp \
|
|
./src/scenes/menu_scene.cpp
|
|
|
|
ENTRY_POINT = ./src/main.cpp
|
|
TEST_ENTRY_POINT = ./src/test.cpp
|
|
|
|
IMGUI_OBJS = $(patsubst ./external/imgui/%.cpp,./bin/%.o,$(IMGUI_SRCS))
|
|
IMGUI_BACKEND_OBJS = $(patsubst ./external/rlImGui/%.cpp,./bin/%.o,$(IMGUI_BACKEND))
|
|
OBJS_FILES = $(patsubst ./src/%.cpp,./bin/%.o,$(SRC_FILES))
|
|
|
|
DEP_FILES = $(patsubst ./bin/%.o,./bin/%.d,$(OBJS_FILES))
|
|
|
|
|
|
all: build-desktop run-desktop
|
|
|
|
./bin/%.o: ./external/imgui/%.cpp
|
|
@mkdir -p bin
|
|
$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
|
|
|
|
./bin/%.o: ./external/rlImGui/%.cpp
|
|
@mkdir -p bin
|
|
$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
|
|
|
|
./bin/%.o: ./src/%.cpp
|
|
@mkdir -p bin
|
|
@mkdir -p $(dir $@)
|
|
$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
|
|
|
|
ccj: clean
|
|
@echo "Generating compile_commands.json..."
|
|
bear -- $(MAKE)
|
|
|
|
ccj-web: clean
|
|
@echo "Generating web compile_commands.json..."
|
|
$(WSL) bear -- $(MAKE) web-native
|
|
@sed -i '$$ s/,$$//' compile_commands.json
|
|
@sed -i 's|"/home/|"\\\\\\\\wsl.localhost\\\\archlinux\\\\home\\\\|g' compile_commands.json
|
|
@sed -i 's|=/home/|=\\\\\\\\wsl.localhost\\\\archlinux\\\\home\\\\|g' compile_commands.json
|
|
@sed -i 's|"/mnt/c/|"C:/|g' compile_commands.json
|
|
|
|
-include $(DEP_FILES)
|
|
|
|
build-gui: $(IMGUI_OBJS)
|
|
|
|
build-gui-backend: $(IMGUI_BACKEND_OBJS)
|
|
|
|
build-core: $(OBJS_FILES)
|
|
|
|
build-desktop: $(OBJS_FILES) $(IMGUI_OBJS) $(IMGUI_BACKEND_OBJS)
|
|
@mkdir -p bin
|
|
$(CXX) $(CXXFLAGS) $(INCLUDES) $(ENTRY_POINT) $(OBJS_FILES) $(IMGUI_OBJS) $(IMGUI_BACKEND_OBJS) $(LDFLAGS) $(LIBS) -o ./bin/main.exe
|
|
cp ./assets ./bin -rf
|
|
|
|
build-test: $(OBJS_FILES) $(IMGUI_OBJS) $(IMGUI_BACKEND_OBJS)
|
|
@mkdir -p bin
|
|
$(CXX) $(CXXFLAGS) $(INCLUDES) $(TEST_ENTRY_POINT) $(OBJS_FILES) $(IMGUI_OBJS) $(IMGUI_BACKEND_OBJS) $(LDFLAGS) $(LIBS) -o ./bin/test.exe
|
|
cp ./assets ./bin -rf
|
|
|
|
|
|
build-debug:
|
|
@mkdir -p debug
|
|
$(CXX) $(DEBUGFLAGS) $(INCLUDES) $(ENTRY_POINT) $(SRC_FILES) $(IMGUI_OBJS) $(IMGUI_BACKEND_OBJS) $(LDFLAGS) $(LIBS) -o ./debug/d.exe
|
|
cp ./data.dat ./debug -rf
|
|
|
|
web:
|
|
@mkdir -p web
|
|
$(WEB_CXX) $(CXXFLAGS) $(WEB_INCLUDES) $(ENTRY_POINT) $(SRC_FILES) $(IMGUI_SRCS) $(IMGUI_BACKEND) $(WEB_LDFLAGS) $(WEB_LIBS) -o ./web/index.html
|
|
|
|
web-native:
|
|
@mkdir -p web
|
|
em++ $(CXXFLAGS) $(WEB_INCLUDES) $(ENTRY_POINT) $(SRC_FILES) $(IMGUI_SRCS) $(IMGUI_BACKEND) $(WEB_LDFLAGS) $(WEB_LIBS) -o ./web/index.html
|
|
|
|
clean-desktop:
|
|
@rm -r -f ./bin
|
|
@rm -f compile_commands.json
|
|
|
|
clean-debug:
|
|
@rm -r -f ./debug
|
|
|
|
clean-web:
|
|
@rm -r -f ./web
|
|
|
|
clean: clean-desktop clean-debug clean-web
|
|
|
|
run-desktop:
|
|
./bin/main.exe
|
|
|
|
open-browser:
|
|
$(BROWSER)
|
|
|
|
start-server:
|
|
$(WSL) python -m http.server 3000 -d ./web
|
|
run-web:
|
|
$(BROWSER) http://localhost:3000/index.html
|
|
$(WSL) python -m http.server 3000 -d ./web
|
|
# $(WSL) node ./web/web.js
|
|
|
|
run-debug:
|
|
./debug/d.exe
|
|
|
|
run-test: build-test
|
|
./bin/test.exe
|
|
|
|
pack-assets:
|
|
./external/asset_packer/bin/assetpacker.exe assets/
|
|
|
|
|
|
|