diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-06-05 15:50:27 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-06-05 16:00:59 -0400 |
| commit | 11454fb99a9dc1c959e58828f447d1fb2e9f3d9d (patch) | |
| tree | e51691d7adcc9e789471e911f107e71d51b619b8 /Makefile | |
| parent | 1231e679cabdf8d62677fce46fa15207007aab4f (diff) | |
Makefile: refactor for BUILD_MODE
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 389 |
1 files changed, 149 insertions, 240 deletions
@@ -2,20 +2,54 @@ PROJ=pikul_two -include config.mk +# Automatically set BUILD_MODE if target path hints at it +ifeq (,$(BUILD_MODE)) + ifneq (,$(findstring dbg/,$(MAKECMDGOALS))) + BUILD_MODE := debug + else ifneq (,$(findstring rld/,$(MAKECMDGOALS))) + BUILD_MODE := release-debug + else ifneq (,$(findstring bin/,$(MAKECMDGOALS))) + BUILD_MODE := release + endif +endif + +-include config.mk + +DIR_EXE_release := bin +DIR_EXE_release-debug := rld +DIR_EXE_debug := dbg +DIR_OBJ := obj +BUILD_MODE ?= release +DIR_EXE := $(DIR_EXE_$(BUILD_MODE)) + +ifeq ($(BUILD_MODE),release) + OBJ_EXT := o + LIB_EXT := a + BLT_BUILD_MODE := release64 + BLT_BUILD_DIR := Release + OPT_FLAGS ?= -O3 -s +else ifeq ($(BUILD_MODE),release-debug) + OBJ_EXT := rso + LIB_EXT := rsa + BLT_BUILD_MODE := debug64 + BLT_BUILD_DIR := Debug + OPT_FLAGS ?= -O2 -g +else ifeq ($(BUILD_MODE),debug) + OBJ_EXT := so + LIB_EXT := sa + BLT_BUILD_MODE := debug64 + BLT_BUILD_DIR := Debug + OPT_FLAGS ?= -O0 -g +else + $(error Unknown build mode: $(BUILD_MODE)) +endif #echo $@ : $(@F) : $< : $^ -define cc-bin-command - $(CC) -std=c2x -c -o $@ -DNDEBUG -s -O2 $(CFLAGS) $(INCS) $< +define cc-command + $(CC) -std=c2x -c -o $@ -DNDEBUG $(OPT_FLAGS) $(CFLAGS) $(INCS) $< endef -define cc-dbg-command - $(CC) -std=c2x -c -o $@ -DDEBUG -g -O0 $(CFLAGS) $(INCS) $< -endef -define cxx-bin-command - $(CXX) -std=c++23 -c -o $@ -DNDEBUG -s -O2 $(CXXFLAGS) $(INCS) $< -endef -define cxx-dbg-command - $(CXX) -std=c++23 -c -o $@ -DDEBUG -g -O0 $(CXXFLAGS) $(INCS) $< +define cxx-command + $(CXX) -std=c++23 -c -o $@ -DDEBUG $(OPT_FLAGS) $(CXXFLAGS) $(INCS) $< endef define cc-encode-binary-command $(1): $(2) @@ -52,10 +86,6 @@ $(foreach f,$(FILES_BIN_SAFE), \ ) \ ) -DIR_OBJ=obj -DIR_BIN=bin -DIR_DBG=dbg - DST_SHADERS = \ $(DIR_OBJ)/shaders/vertex.vert.spv \ $(DIR_OBJ)/shaders/present.vert.spv \ @@ -66,23 +96,17 @@ DST_SHADERS = \ $(DIR_OBJ)/shaders/ui-base.vert.spv \ $(DIR_OBJ)/shaders/ui-base.frag.spv \ -MAINS_OBJ = obj/editor-main.o obj/pke-runtime.o obj/test-pke.o -MAINS_SOBJ = $(MAINS_OBJ:%.o=%.so) - .PHONY: default -default: options $(DIR_BIN)/pke-editor $(DIR_BIN)/libpke-example.a $(DIR_BIN)/pke-runtime ; - -.PHONY: default-dbg -default-dbg: options $(DIR_DBG)/pke-editor $(DIR_DBG)/libpke-example.a $(DIR_DBG)/pke-runtime ; +default: options .WAIT $(DIR_EXE)/pke-editor $(DIR_EXE)/libpke-example.a $(DIR_EXE)/pke-runtime ; .PHONY: prepare prepare: config.h prepare: config.mk prepare: $(FILES_BIN_GCH) prepare: - mkdir -p $(DIR_BIN) $(DIR_DBG) $(DIR_OBJ) $(DIR_OBJ)/shaders $(DIR_DBG)/bullet3 $(DIR_BIN)/bullet3 - mkdir -p $(DIR_BIN)/bullet3 - mkdir -p $(DIR_DBG)/bullet3 + mkdir -p $(DIR_EXE) + mkdir -p $(DIR_OBJ)/shaders + mkdir -p $(DIR_OBJ)/bullet3 .PHONY: options options: prepare .WAIT @@ -90,251 +114,136 @@ options: prepare .WAIT @echo "CFLAGS = $(CFLAGS)" @echo "CXXFLAGS = $(CXXFLAGS)" @echo "LDFLAGS = $(LDFLAGS)" + @echo "OPT_FLAGS= $(OPT_FLAGS)" @echo "CC = $(CC)" @echo "CXX = $(CXX)" config.h: cp config.def.h $@ -$(DIR_OBJ)/%.o : sub/imgui/%.cpp | prepare - $(cxx-bin-command) -Isub/imgui -$(DIR_OBJ)/%.so : sub/imgui/%.cpp | prepare - $(cxx-dbg-command) -Isub/imgui -$(DIR_OBJ)/%.o : sub/imgui/backends/%.cpp | prepare - $(cxx-bin-command) -Isub/imgui -$(DIR_OBJ)/%.so : sub/imgui/backends/%.cpp | prepare - $(cxx-dbg-command) -Isub/imgui -$(DIR_OBJ)/%.o : sub/imgui/misc/cpp/%.cpp | prepare - $(cxx-bin-command) -Isub/imgui -$(DIR_OBJ)/%.so : sub/imgui/misc/cpp/%.cpp | prepare - $(cxx-dbg-command) -Isub/imgui +$(DIR_OBJ)/%.$(OBJ_EXT) : sub/imgui/%.cpp | prepare + $(cxx-command) -Isub/imgui +$(DIR_OBJ)/%.$(OBJ_EXT) : sub/imgui/backends/%.cpp | prepare + $(cxx-command) -Isub/imgui +$(DIR_OBJ)/%.$(OBJ_EXT) : sub/imgui/misc/cpp/%.cpp | prepare + $(cxx-command) -Isub/imgui $(DIR_OBJ)/shaders/%.vert.spv: assets/shaders/%.vert | prepare $(GLSLC) $^ -o $@ $(DIR_OBJ)/shaders/%.frag.spv: assets/shaders/%.frag | prepare $(GLSLC) $^ -o $@ -$(DIR_OBJ)/%.o : src/%.c | prepare - $(cc-bin-command) $(FLG_PKE) -$(DIR_OBJ)/%.so : src/%.c | prepare - $(cc-dbg-command) $(FLG_PKE) -$(DIR_OBJ)/%.o : embed/%.c | prepare - $(cc-bin-command) $(FLG_PKE) -$(DIR_OBJ)/%.so : embed/%.c | prepare - $(cc-dbg-command) $(FLG_PKE) -$(DIR_OBJ)/%.o : src/vendor/tinyfiledialogs/%.c | prepare - $(cc-bin-command) $(FLG_PKE) -$(DIR_OBJ)/%.so : src/vendor/tinyfiledialogs/%.c | prepare - $(cc-dbg-command) $(FLG_PKE) -$(DIR_OBJ)/%.o : tests/%.c | prepare - $(cc-bin-command) $(FLG_TST) -$(DIR_OBJ)/%.so : tests/%.c | prepare - $(cc-dbg-command) $(FLG_TST) - -$(DIR_OBJ)/%.o : src/%.cpp | prepare - $(cxx-bin-command) $(FLG_PKE) -$(DIR_OBJ)/%.so : src/%.cpp | prepare - $(cxx-dbg-command) $(FLG_PKE) -$(DIR_OBJ)/%.o : embed/%.cpp | prepare - $(cxx-bin-command) $(FLG_PKE) -$(DIR_OBJ)/%.so : embed/%.cpp | prepare - $(cxx-dbg-command) $(FLG_PKE) -$(DIR_OBJ)/%.o : editor/%.cpp | prepare - $(cxx-bin-command) $(FLG_EDT) -$(DIR_OBJ)/%.so : editor/%.cpp | prepare - $(cxx-dbg-command) $(FLG_EDT) -$(DIR_OBJ)/%.o : example/%.cpp | prepare - $(cxx-bin-command) $(FLG_MPL) -$(DIR_OBJ)/%.so : example/%.cpp | prepare - $(cxx-dbg-command) $(FLG_MPL) -$(DIR_OBJ)/%.o : runtime/%.cpp | prepare - $(cxx-bin-command) $(FLG_RUN) -$(DIR_OBJ)/%.so : runtime/%.cpp | prepare - $(cxx-dbg-command) $(FLG_RUN) -$(DIR_OBJ)/%.o : tests/%.cpp | prepare - $(cxx-bin-command) $(FLG_TST) -$(DIR_OBJ)/%.so : tests/%.cpp | prepare - $(cxx-dbg-command) $(FLG_TST) - -$(DIR_BIN)/libImgui.a: $(DIR_OBJ)/imgui.o -$(DIR_BIN)/libImgui.a: $(DIR_OBJ)/imgui_demo.o -$(DIR_BIN)/libImgui.a: $(DIR_OBJ)/imgui_draw.o -$(DIR_BIN)/libImgui.a: $(DIR_OBJ)/imgui_tables.o -$(DIR_BIN)/libImgui.a: $(DIR_OBJ)/imgui_widgets.o -$(DIR_BIN)/libImgui.a: $(DIR_OBJ)/imgui_impl_glfw.o -$(DIR_BIN)/libImgui.a: $(DIR_OBJ)/imgui_impl_vulkan.o -$(DIR_BIN)/libImgui.a: $(DIR_OBJ)/imgui_stdlib.o - ar rc $@ $^ - ranlib $@ - -$(DIR_DBG)/libImgui.a: $(DIR_OBJ)/imgui.so -$(DIR_DBG)/libImgui.a: $(DIR_OBJ)/imgui_demo.so -$(DIR_DBG)/libImgui.a: $(DIR_OBJ)/imgui_draw.so -$(DIR_DBG)/libImgui.a: $(DIR_OBJ)/imgui_tables.so -$(DIR_DBG)/libImgui.a: $(DIR_OBJ)/imgui_widgets.so -$(DIR_DBG)/libImgui.a: $(DIR_OBJ)/imgui_impl_glfw.so -$(DIR_DBG)/libImgui.a: $(DIR_OBJ)/imgui_impl_vulkan.so -$(DIR_DBG)/libImgui.a: $(DIR_OBJ)/imgui_stdlib.so +$(DIR_OBJ)/%.$(OBJ_EXT) : src/%.c | prepare + $(cc-command) $(FLG_PKE) +$(DIR_OBJ)/%.$(OBJ_EXT) : embed/%.c | prepare + $(cc-command) $(FLG_PKE) +$(DIR_OBJ)/%.$(OBJ_EXT) : src/vendor/tinyfiledialogs/%.c | prepare + $(cc-command) $(FLG_PKE) +$(DIR_OBJ)/%.$(OBJ_EXT) : tests/%.c | prepare + $(cc-command) $(FLG_TST) + +$(DIR_OBJ)/%.$(OBJ_EXT) : src/%.cpp | prepare + $(cxx-command) $(FLG_PKE) +$(DIR_OBJ)/%.$(OBJ_EXT) : embed/%.cpp | prepare + $(cxx-command) $(FLG_PKE) +$(DIR_OBJ)/%.$(OBJ_EXT) : editor/%.cpp | prepare + $(cxx-command) $(FLG_EDT) +$(DIR_OBJ)/%.$(OBJ_EXT) : example/%.cpp | prepare + $(cxx-command) $(FLG_MPL) +$(DIR_OBJ)/%.$(OBJ_EXT) : runtime/%.cpp | prepare + $(cxx-command) $(FLG_RUN) +$(DIR_OBJ)/%.$(OBJ_EXT) : tests/%.cpp | prepare + $(cxx-command) $(FLG_TST) + +$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui.$(OBJ_EXT) +$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_demo.$(OBJ_EXT) +$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_draw.$(OBJ_EXT) +$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_tables.$(OBJ_EXT) +$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_widgets.$(OBJ_EXT) +$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_impl_glfw.$(OBJ_EXT) +$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_impl_vulkan.$(OBJ_EXT) +$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_stdlib.$(OBJ_EXT) ar rc $@ $^ ranlib $@ # -j$$((`nproc`-1)) -$(DIR_BIN)/libBullet3.a: +$(DIR_OBJ)/libBullet3.$(LIB_EXT): (cd sub/bullet3/build3 && ./premake4_linux64 gmake) - ${MAKE} no-demos=1 no-extras=1 no-test=1 config=release64 -C sub/bullet3/build3/gmake \ + ${MAKE} no-demos=1 no-extras=1 no-test=1 config=$(BLT_BUILD_MODE) -C sub/bullet3/build3/gmake \ BulletDynamics BulletCollision LinearMath Bullet3Common - ar r $@ sub/bullet3/build3/gmake/obj/x64/Release/*/*.o + ar r $@ sub/bullet3/build3/gmake/obj/x64/$(BLT_BUILD_DIR)/*/*.o ranlib $@ -# -j$$((`nproc`-1)) -$(DIR_DBG)/libBullet3.a: - (cd sub/bullet3/build3 && ./premake4_linux64 gmake) - ${MAKE} no-demos=1 no-extras=1 no-test=1 config=debug64 -C sub/bullet3/build3/gmake \ - BulletDynamics BulletCollision LinearMath Bullet3Common - ar r $@ sub/bullet3/build3/gmake/obj/x64/Debug/*/*.o +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DST_SHADERS) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/arg-handler.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/asset-manager.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/camera.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/dynamic-array.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/ecs.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/embedded-fonts.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/entities.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/font.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/game-settings.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/game.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/helpers.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/level-types.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/level.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/math-helpers.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/physics.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/player-input.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/plugins.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/project-settings.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/project.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/scene.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/serialization.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/serialization-camera.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/serialization-component.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/serialization-font.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/serialization-static-ui.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/static-cube.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/static-plane.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/static-ui.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/thread-pool.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/vendor-cgltf-include.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/vendor-pkh-include.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/vendor-stb-image-include.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/vendor-tinyfiledialogs.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): $(DIR_OBJ)/window.$(OBJ_EXT) +$(DIR_OBJ)/libpke.$(LIB_EXT): + ar rc $@ $(filter %.$(OBJ_EXT),$^) ranlib $@ -$(DIR_BIN)/libpke.a: $(DST_SHADERS) -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/arg-handler.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/asset-manager.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/camera.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/dynamic-array.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/ecs.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/embedded-fonts.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/entities.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/font.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/game-settings.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/game.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/helpers.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/level-types.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/level.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/math-helpers.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/physics.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/player-input.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/plugins.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/project-settings.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/project.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/scene.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/serialization.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/serialization-camera.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/serialization-component.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/serialization-font.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/serialization-static-ui.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/static-cube.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/static-plane.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/static-ui.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/thread-pool.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/vendor-cgltf-include.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/vendor-pkh-include.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/vendor-stb-image-include.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/vendor-tinyfiledialogs.o -$(DIR_BIN)/libpke.a: $(DIR_OBJ)/window.o -$(DIR_BIN)/libpke.a: - ar rc $@ $(filter %.o,$^) +$(DIR_OBJ)/libpke-editor.$(LIB_EXT): $(DIR_OBJ)/editor-main.$(OBJ_EXT) +$(DIR_OBJ)/libpke-editor.$(LIB_EXT): $(DIR_OBJ)/editor-types.$(OBJ_EXT) +$(DIR_OBJ)/libpke-editor.$(LIB_EXT): $(DIR_OBJ)/editor-io.$(OBJ_EXT) +$(DIR_OBJ)/libpke-editor.$(LIB_EXT): $(DIR_OBJ)/editor.$(OBJ_EXT) +$(DIR_OBJ)/libpke-editor.$(LIB_EXT): + ar rc $@ $(filter %.$(OBJ_EXT),$^) ranlib $@ -$(DIR_DBG)/libpke.a: $(DST_SHADERS) -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/arg-handler.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/asset-manager.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/camera.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/dynamic-array.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/ecs.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/embedded-fonts.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/entities.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/font.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/game-settings.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/game.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/helpers.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/level-types.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/level.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/math-helpers.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/physics.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/player-input.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/plugins.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/project-settings.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/project.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/scene.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/serialization.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/serialization-camera.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/serialization-component.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/serialization-font.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/serialization-static-ui.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/static-cube.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/static-plane.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/static-ui.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/thread-pool.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/vendor-cgltf-include.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/vendor-pkh-include.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/vendor-stb-image-include.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/vendor-tinyfiledialogs.so -$(DIR_DBG)/libpke.a: $(DIR_OBJ)/window.so -$(DIR_DBG)/libpke.a: - ar rc $@ $(filter %.so,$^) +$(DIR_OBJ)/libpke-example.$(LIB_EXT): $(DIR_OBJ)/example.$(OBJ_EXT) + ar rc $@ $(filter %.$(OBJ_EXT),$^) ranlib $@ -$(DIR_BIN)/libpke-editor.a: $(DIR_OBJ)/editor-main.o -$(DIR_BIN)/libpke-editor.a: $(DIR_OBJ)/editor-types.o -$(DIR_BIN)/libpke-editor.a: $(DIR_OBJ)/editor-io.o -$(DIR_BIN)/libpke-editor.a: $(DIR_OBJ)/editor.o -$(DIR_BIN)/libpke-editor.a: - ar rc $@ $(filter %.o,$^) - ranlib $@ +$(DIR_OBJ)/libpke-test.$(LIB_EXT): $(DIR_OBJ)/pke-test-dummy.$(OBJ_EXT) +$(DIR_OBJ)/libpke-test.$(LIB_EXT): $(DIR_OBJ)/pke-test-static-ui.$(OBJ_EXT) +$(DIR_OBJ)/libpke-test.$(LIB_EXT): $(DIR_OBJ)/pke-test-serialization.$(OBJ_EXT) +$(DIR_OBJ)/libpke-test.$(LIB_EXT): $(DIR_OBJ)/pke-test-asset-manager.$(OBJ_EXT) + ar rcs $@ $(filter %.$(OBJ_EXT),$^) -$(DIR_DBG)/libpke-editor.a: $(DIR_OBJ)/editor-main.so -$(DIR_DBG)/libpke-editor.a: $(DIR_OBJ)/editor-types.so -$(DIR_DBG)/libpke-editor.a: $(DIR_OBJ)/editor-io.so -$(DIR_DBG)/libpke-editor.a: $(DIR_OBJ)/editor.so -$(DIR_DBG)/libpke-editor.a: - ar rc $@ $(filter %.so,$^) - ranlib $@ - -$(DIR_BIN)/libpke-example.a: $(DIR_OBJ)/example.o - ar rc $@ $(filter %.o,$^) - ranlib $@ - -$(DIR_DBG)/libpke-example.a: $(DIR_OBJ)/example.so - ar rc $@ $(filter %.so,$^) - ranlib $@ - -$(DIR_BIN)/libpke-test.a: $(DIR_OBJ)/pke-test-dummy.o -$(DIR_BIN)/libpke-test.a: $(DIR_OBJ)/pke-test-static-ui.o -$(DIR_BIN)/libpke-test.a: $(DIR_OBJ)/pke-test-serialization.o -$(DIR_BIN)/libpke-test.a: $(DIR_OBJ)/pke-test-asset-manager.o - ar rcs $@ $(filter %.o,$^) - -$(DIR_DBG)/libpke-test.a: $(DIR_OBJ)/pke-test-dummy.so -$(DIR_DBG)/libpke-test.a: $(DIR_OBJ)/pke-test-static-ui.so -$(DIR_DBG)/libpke-test.a: $(DIR_OBJ)/pke-test-serialization.so -$(DIR_DBG)/libpke-test.a: $(DIR_OBJ)/pke-test-asset-manager.so - ar rcs $@ $(filter %.so,$^) - -$(DIR_BIN)/pke-editor: $(DIR_BIN)/libpke-editor.a $(DIR_BIN)/libpke.a $(DIR_BIN)/libImgui.a $(DIR_BIN)/libBullet3.a -$(DIR_BIN)/pke-editor: - $(CXX) -v -std=c++23 $(INCS) $^ /home/pikum/build/msdf-atlas-gen/dbg/msdf-atlas-gen.a /home/pikum/build/msdfgen/dbg/msdfgen.a $(LDFLAGS) $(CXXFLAGS) -s -O2 -o $@ - -$(DIR_DBG)/pke-editor: $(DIR_DBG)/libpke-editor.a $(DIR_DBG)/libpke.a $(DIR_DBG)/libImgui.a $(DIR_DBG)/libBullet3.a -$(DIR_DBG)/pke-editor: - $(CXX) -v -std=c++23 $(INCS) $^ /home/pikum/build/msdf-atlas-gen/dbg/msdf-atlas-gen.a /home/pikum/build/msdfgen/dbg/msdfgen.a $(LDFLAGS) $(CXXFLAGS) -g -O0 -o $@ - -$(DIR_BIN)/pke-runtime: $(DIR_BIN)/libpke.a $(DIR_BIN)/libImgui.a $(DIR_BIN)/libBullet3.a -$(DIR_BIN)/pke-runtime: $(DIR_OBJ)/runtime.o - @echo $^ - $(CXX) -v -std=c++23 $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -s -O2 -o $@ - -$(DIR_DBG)/pke-runtime: $(DIR_DBG)/libpke.a $(DIR_DBG)/libImgui.a $(DIR_DBG)/libBullet3.a -$(DIR_DBG)/pke-runtime: $(DIR_OBJ)/runtime.so - @echo $^ - $(CXX) -v -std=c++23 $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -g -O0 -o $@ +$(DIR_EXE)/pke-editor: $(DIR_OBJ)/libpke-editor.$(LIB_EXT) $(DIR_OBJ)/libpke.$(LIB_EXT) $(DIR_OBJ)/libImgui.$(LIB_EXT) $(DIR_OBJ)/libBullet3.$(LIB_EXT) +$(DIR_EXE)/pke-editor: + $(CXX) -v -std=c++23 $(OPT_FLAGS) $(INCS) $^ /home/pikum/build/msdf-atlas-gen/dbg/msdf-atlas-gen.a /home/pikum/build/msdfgen/dbg/msdfgen.a $(LDFLAGS) $(CXXFLAGS) -o $@ -$(DIR_BIN)/pke-test: $(DIR_BIN)/libpke-test.a $(DIR_BIN)/libpke.a $(DIR_BIN)/libImgui.a $(DIR_BIN)/libBullet3.a -$(DIR_BIN)/pke-test: $(DIR_OBJ)/pke-test.o +$(DIR_EXE)/pke-runtime: $(DIR_OBJ)/libpke.$(LIB_EXT) $(DIR_OBJ)/libImgui.$(LIB_EXT) $(DIR_OBJ)/libBullet3.$(LIB_EXT) +$(DIR_EXE)/pke-runtime: $(DIR_OBJ)/runtime.$(OBJ_EXT) @echo $^ - $(CXX) -v -std=c++23 $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -s -O2 -o $@ + $(CXX) -v -std=c++23 $(OPT_FLAGS) $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -o $@ -$(DIR_DBG)/pke-test: $(DIR_DBG)/libpke-test.a $(DIR_DBG)/libpke.a $(DIR_DBG)/libImgui.a $(DIR_DBG)/libBullet3.a -$(DIR_DBG)/pke-test: $(DIR_OBJ)/pke-test.so +$(DIR_EXE)/pke-test: $(DIR_OBJ)/libpke-test.$(LIB_EXT) $(DIR_OBJ)/libpke.$(LIB_EXT) $(DIR_OBJ)/libImgui.$(LIB_EXT) $(DIR_OBJ)/libBullet3.$(LIB_EXT) +$(DIR_EXE)/pke-test: $(DIR_OBJ)/pke-test.$(OBJ_EXT) @echo $^ - $(CXX) -v -std=c++23 $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -g -O0 -o $@ + $(CXX) -v -std=c++23 $(OPT_FLAGS) $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -o $@ .PHONY: print print: @@ -345,6 +254,6 @@ print: clean: rm -rf .cache rm -f *.o *.so *.plist config.h $(FILES_BIN_GCH) - rm -rf $(DIR_BIN) $(DIR_OBJ) $(DIR_DBG) + rm -rf ./$(DIR_EXE_release) ./$(DIR_EXE_release-debug) ./$(DIR_EXE_debug) ./$(DIR_OBJ) .PHONY: dist install uninstall |
