diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-01-08 22:26:07 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-01-08 22:26:07 -0500 |
| commit | 5845642965a1eebaec3a1d1126445ecb459688b8 (patch) | |
| tree | d3c54bec229ac4dcf7c4af349e0383130a041752 /Makefile | |
| parent | b2548ba4ce295fcd94a50123fb543fac2ef2bc33 (diff) | |
first-pass replace cmake with make
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..cfef1ea --- /dev/null +++ b/Makefile @@ -0,0 +1,267 @@ +# pikul_two + +PROJ=pikul_two + +include config.mk + +#echo $@ : $(@F) : $< : $^ +define cc-bin-command + $(CC) -std=c2x -c -o $@ -DNDEBUG -O0 $(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 -O0 $(CXXFLAGS) $(INCS) $< +endef +define cxx-dbg-command + $(CXX) -std=c++23 -c -o $@ -DDEBUG -g -O0 $(CXXFLAGS) $(INCS) $< +endef + +FLG_PKE = -Isub/imgui -Isub/stb -Isub/cgltf -Isub/bullet3/src +FLG_EDT = $(FLG_PKE) -Isrc + +DIR_OBJ=obj +DIR_BIN=bin +DIR_DBG=dbg +DIR_SCR=scratch + +SRC = \ + src/vendor/pkh_include.cpp \ + src/arg-handler.cpp \ + src/camera.cpp \ + src/ecs.cpp \ + src/entities.cpp \ + src/event.cpp \ + src/game.cpp \ + src/game-settings.cpp \ + src/helpers.cpp \ + src/level-types.cpp \ + src/level.cpp \ + src/math-helpers.cpp \ + src/dynamic-array.cpp \ + src/asset-manager.cpp \ + src/physics.cpp \ + src/player-input.cpp \ + src/plugins.cpp \ + src/project.cpp \ + src/project-settings.cpp \ + src/static/cube.cpp \ + src/thread_pool.cpp \ + src/vendor/cgltf-include.cpp \ + src/vendor/stb_image_include.cpp \ + src/vendor/tinyfiledialogs/tinyfiledialogs.c \ + src/window.cpp \ + +DST_SHADERS = \ + $(DIR_OBJ)/vertex.vert.spv \ + $(DIR_OBJ)/present.vert.spv \ + $(DIR_OBJ)/texture.frag.spv \ + $(DIR_OBJ)/present.frag.spv \ + +# Bullet3Collision/libBullet3Collision.a \ + Bullet3Dynamics/libBullet3Dynamics.a \ + Bullet3Geometry/libBullet3Geometry.a \ + Bullet3OpenCL/libBullet3OpenCL_clew.a \ + Bullet3Serialize/Bullet2FileLoader/libBullet2FileLoader.a \ + BulletInverseDynamics/libBulletInverseDynamics.a \ + BulletSoftBody/libBulletSoftBody.a \ + +# DST_BULLET = \ + BulletDynamics/libBulletDynamics.so.3.25 \ + BulletCollision/libBulletCollision.so.3.25 \ + LinearMath/libLinearMath.so.3.25 \ + Bullet3Common/libBullet3Common.so.3.25 \ + +# TMP_BULLET = $(notdir $(DST_BULLET)) +# DST_BULLET_BIN = $(TMP_BULLET:%.so.3.25=$(DIR_BIN)/%.so.3.25) +# DST_BULLET_DBG = $(TMP_BULLET:%.so.3.25=$(DIR_DBG)/%.so.3.25) + +DST_BULLET = \ + BulletDynamics/libBulletDynamics.a \ + BulletCollision/libBulletCollision.a \ + LinearMath/libLinearMath.a \ + Bullet3Common/libBullet3Common.a \ + +DST_BULLET_BIN = $(TMP_BULLET:%.a=$(DIR_BIN)/src/bullet3/%.a) +DST_BULLET_DBG = $(TMP_BULLET:%.a=$(DIR_DBG)/src/bullet3/%.a) + +SRC_C = $(filter %.c,$(SRC)) +SRC_CXX = $(filter %.cpp,$(SRC)) +OBJ = $(SRC_C:%.c=%.o) +SOBJ = $(SRC_C:%.c=%.so) +CXXOBJ = $(SRC_CXX:%.cpp=%.o) +CXXSOBJ = $(SRC_CXX:%.cpp=%.so) +TMP_OUT_OBJ = $(notdir $(OBJ)) +TMP_OUT_SOBJ = $(notdir $(SOBJ)) +TMP_OUT_CXXOBJ = $(notdir $(CXXOBJ)) +TMP_OUT_CXXSOBJ = $(notdir $(CXXSOBJ)) +OUT_OBJ = $(TMP_OUT_OBJ:%.o=$(DIR_OBJ)/%.o) +OUT_SOBJ = $(TMP_OUT_SOBJ:%.so=$(DIR_OBJ)/%.so) +OUT_CXXOBJ = $(TMP_OUT_CXXOBJ:%.o=$(DIR_OBJ)/%.o) +OUT_CXXSOBJ = $(TMP_OUT_CXXSOBJ:%.so=$(DIR_OBJ)/%.so) + +.PHONY: prepare +prepare: + mkdir -p $(DIR_BIN) $(DIR_DBG) $(DIR_OBJ) $(DIR_DBG)/bullet3 $(DIR_BIN)/bullet3 + mkdir -p $(DIR_BIN)/bullet3 $(DIR_BIN)/assets/shaders + mkdir -p $(DIR_DBG)/bullet3 $(DIR_DBG)/assets/shaders + +.PHONY: options +options: prepare .WAIT + @echo "$(PROJ)" build options: + @echo "CFLAGS = $(CFLAGS)" + @echo "CXXFLAGS = $(CXXFLAGS)" + @echo "LDFLAGS = $(LDFLAGS)" + @echo "CC = $(CC)" + @echo "CXX = $(CXX)" + +config.h: + cp config.def.h $@ + +%.h: ; + +$(SRC_C): config.h config.mk +$(SRC_CXX): config.h config.mk + +$(DIR_OBJ)/%.o: sub/imgui/%.cpp + $(cxx-bin-command) -Isub/imgui +$(DIR_OBJ)/%.so: sub/imgui/%.cpp + $(cxx-dbg-command) -Isub/imgui +$(DIR_OBJ)/%.o: sub/imgui/backends/%.cpp + $(cxx-bin-command) -Isub/imgui +$(DIR_OBJ)/%.so: sub/imgui/backends/%.cpp + $(cxx-dbg-command) -Isub/imgui +$(DIR_OBJ)/%.o: sub/imgui/misc/cpp/%.cpp + $(cxx-bin-command) -Isub/imgui +$(DIR_OBJ)/%.so: sub/imgui/misc/cpp/%.cpp + $(cxx-dbg-command) -Isub/imgui + +$(DIR_OBJ)/%.vert.spv: assets/shaders/%.vert + $(GLSLC) $^ -o $@ + cp $@ $(DIR_BIN)/assets/shaders + cp $@ $(DIR_DBG)/assets/shaders +$(DIR_OBJ)/%.frag.spv: assets/shaders/%.frag + $(GLSLC) $^ -o $@ + cp $@ $(DIR_BIN)/assets/shaders + cp $@ $(DIR_DBG)/assets/shaders + +$(DIR_OBJ)/%.o : src/%.c + $(cc-bin-command) $(FLG_PKE) +$(DIR_OBJ)/%.so : src/%.c + $(cc-dbg-command) $(FLG_PKE) +$(DIR_OBJ)/%.o : src/vendor/tinyfiledialogs/%.c + $(cc-bin-command) $(FLG_PKE) +$(DIR_OBJ)/%.so : src/vendor/tinyfiledialogs/%.c + $(cc-dbg-command) $(FLG_PKE) + +$(DIR_OBJ)/%.o : src/%.cpp + $(cxx-bin-command) $(FLG_PKE) +$(DIR_OBJ)/%.so : src/%.cpp + $(cxx-dbg-command) $(FLG_PKE) +$(DIR_OBJ)/%.o : src/static/%.cpp + $(cxx-bin-command) $(FLG_PKE) +$(DIR_OBJ)/%.so : src/static/%.cpp + $(cxx-dbg-command) $(FLG_PKE) +$(DIR_OBJ)/%.o : src/vendor/%.cpp + $(cxx-bin-command) $(FLG_PKE) +$(DIR_OBJ)/%.so : src/vendor/%.cpp + $(cxx-dbg-command) $(FLG_PKE) +$(DIR_OBJ)/%.o : editor/%.cpp + $(cxx-bin-command) $(FLG_EDT) +$(DIR_OBJ)/%.so : editor/%.cpp + $(cxx-dbg-command) $(FLG_EDT) + +$(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 + ar rc $@ $^ + ranlib $@ + +$(DIR_BIN)/libBullet3.a: + $(CMAKE) \ + -DCMAKE_C_FLAGS:STRING="" \ + -DCMAKE_CXX_FLAGS:STRING="" \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DBUILD_BULLET2_DEMOS:BOOL=0 \ + -DBUILD_CPU_DEMOS:BOOL=0 \ + -DBUILD_UNIT_TESTS:BOOL=0 \ + -DBUILD_OPENGL3_DEMOS:BOOL=0 \ + -DBUILD_EXTRAS:BOOL=0 \ + -DINSTALL_EXTRA_LIBS:BOOL=0 \ + -DINSTALL_LIBS:BOOL=1 \ + -DINSTALL_CMAKE_FILES:BOOL=0 \ + -DPOSITION_INDEPENDENT_CODE:BOOL=0 \ + -Hsub/bullet3 -B$(DIR_BIN)/bullet3 -G "Unix Makefiles" + $(CMAKE) --build $(DIR_BIN)/bullet3 --target BulletDynamics BulletCollision LinearMath Bullet3Common + ar rc $@ $(DST_BULLET_BIN) + # touch $@ + + +# -LAH to show all cmake variables + +# +# ar rc $@ sub/bullet3/build3/gmake/obj/x64/Debug/Bullet3Collision/*.o +# ar r $@ sub/bullet3/build3/gmake/obj/x64/Debug/Bullet3Common/*.o +# ar r $@ sub/bullet3/build3/gmake/obj/x64/Debug/BulletCollision/*.o +# ar r $@ sub/bullet3/build3/gmake/obj/x64/Debug/BulletDynamics/*.o +# ar r $@ sub/bullet3/build3/gmake/obj/x64/Debug/LinearMath/*.o +$(DIR_DBG)/libBullet3.a: + (cd sub/bullet3/build3 && ./premake4_linux64 gmake) + ${MAKE} no-demos=1 no-extras=1 no-test=1 config=debug64 -j$$((`nproc`-1)) -C sub/bullet3/build3/gmake \ + BulletCollision Bullet3Collision BulletDynamics LinearMath Bullet3Common + ar r $@ sub/bullet3/build3/gmake/obj/x64/Debug/*/*.o + ranlib $@ + +$(DIR_BIN)/libpke.a: $(DST_SHADERS) +$(DIR_BIN)/libpke.a: $(OUT_OBJ) $(OUT_CXXOBJ) +$(DIR_BIN)/libpke.a: + ar rc $@ $(filter %.o,$^) + ranlib $@ + +$(DIR_DBG)/libpke.a: $(DST_SHADERS) +$(DIR_DBG)/libpke.a: $(OUT_SOBJ) $(OUT_CXXSOBJ) +$(DIR_DBG)/libpke.a: + ar rc $@ $(filter %.so,$^) + ranlib $@ + +# $(DST_BULLET_BIN) -L$(PWD)/bin -L$(PWD)/obj +# $(DIR_BIN)/pke-editor: $(DIR_OBJ)/main.o $(DIR_OBJ)/editor.o +$(DIR_BIN)/pke-editor: $(DIR_OBJ)/main.o $(DIR_OBJ)/editor.o +$(DIR_BIN)/pke-editor: $(DIR_BIN)/libpke.a + $(CXX) -v -o $@ -O3 $(CXXFLAGS) $(LDFLAGS) $(FLG_EDT) $^ -Wl,-v + +$(DIR_DBG)/pke-editor: $(DIR_DBG)/libpke.a $(DIR_DBG)/libImgui.a $(DIR_DBG)/libBullet3.a +$(DIR_DBG)/pke-editor: $(DIR_OBJ)/main.so $(DIR_OBJ)/editor.so + @echo $^ + $(CXX) -v -std=c++23 $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -g -Os $(FLG_EDT) -o $@ + +# pke-dbg: + +.PHONY: print +print: + @echo $(DST_SHADERS) + +.PHONY: clean +clean: + rm -rf .cache + rm -f *.o *.so *.plist config.h + rm -rf $(DIR_BIN) $(DIR_OBJ) $(DIR_DBG) + +.PHONY: dist install uninstall |
