diff options
Diffstat (limited to 'Makefile.am')
| -rw-r--r-- | Makefile.am | 92 |
1 files changed, 85 insertions, 7 deletions
diff --git a/Makefile.am b/Makefile.am index 3297551..67779d6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,14 +1,27 @@ EXTRA_DIST = m4/NOTES -SUBDIRS = src ACLOCAL_AMFLAGS = -Im4 --install -assetsdir = $(datarootdir)/assets -assets_DATA = ../assets/suzanne.obj ../assets/viking_room.obj -EXTRA_DIST += $(assets_DATA) +# TODO: right now, the source tree and the install tree must share the same structure, which is very +# bad, because for example this causes "src" to be used as a final directory +# TODO: make variable for each subdirectory name, instead of copying it everywhere +# TODO: we shouldn't have everything in a single Makefile.am +if DEBUG +ASSETS_DIR_CPP = $(srcdir)/assets +ASSETS_OBJS_DIR_CPP = $(srcdir)/assets/objs +ASSETS_TEXTURES_DIR_CPP = $(srcdir)/assets/textures +SHADERS_DIR_CPP = $(builddir)/src/shaders +else +ASSETS_DIR_CPP = assets +ASSETS_OBJS_DIR_CPP = assets/objs +ASSETS_TEXTURES_DIR_CPP = assets/textures +SHADERS_DIR_CPP = src/shaders +endif -texturesdir = $(assetsdir)/textures -textures_DATA = ../assets/textures/texture.jpg ../assets/textures/viking_room.png -EXTRA_DIST += $(textures_DATA) +enginedir = $(datarootdir)/engine +nobase_engine_DATA = \ + assets/objs/suzanne.obj assets/textures/texture.jpg \ + assets/objs/viking_room.obj assets/textures/viking_room.png +EXTRA_DIST += $(engine_DATA) # assets origin: # - assets/suzanne.obj @@ -21,3 +34,68 @@ EXTRA_DIST += $(textures_DATA) # comes from here https://sketchfab.com/3d-models/viking-room-a49f1b8e4f5c4ecf9e1fe7d81915ad38, # modified by the author(s) of the vulkan tutorials (see # https://docs.vulkan.org/tutorial/latest/08_Loading_models.html#_sample_mesh) + +nobase_engine_PROGRAMS = engine +nobase_dist_engine_SCRIPTS = src/shaders/shader.spv +noinst_PROGRAMS = src/shaders/shader.spv.rmext +AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = src/shaders/shader.spv +CLEANFILES = src/shaders/shader.spv.rmext + +engine_SOURCES = \ + src/engine.cpp \ + src/renderer.hpp src/renderer.cpp \ + src/obj_parser.hpp src/obj_parser.cpp \ + src/vulkan_utils.hpp \ + src/path_utils.hpp src/path_utils.cpp \ + src/stb_image.h \ + src/stb_image.cpp \ + src/fb/fb.hpp \ + src/fb/chfb.hpp src/fb/chfb.cpp \ + src/fb/pixfb.hpp src/fb/pixfb.cpp \ + src/math/utils.hpp \ + src/math/vector.hpp \ + src/math/mat4.hpp \ + src/math/quat.hpp \ + src/math/tform.hpp \ + src/o3d/mesh.hpp src/o3d/mesh.cpp \ + src/o3d/obj3d.hpp \ + src/o3d/vertex.hpp \ + src/o3d/deriv_vertex.hpp \ + src/o3d/tri.hpp \ + src/o3d/tri_deriv.hpp \ + src/o3d/polygon.hpp \ + src/o3d/camera.hpp \ + src/o3d/scene.hpp \ + src/ctrl/keyboard.hpp \ + src/ctrl/mouse.hpp \ + src/shaders/shaders.hpp \ + src/shaders/simple_shaders.hpp src/shaders/simple_shaders.cpp + +src_shaders_shader_spv_rmext_SOURCES = src/shaders/shader.slang + +engine_CPPFLAGS = -std=gnu++23 -Wall -Wextra -I'$(srcdir)/src' \ + -DASSETS_DIR='"$(ASSETS_DIR_CPP)"' \ + -DASSETS_OBJS_DIR='"$(ASSETS_OBJS_DIR_CPP)"' \ + -DASSETS_TEXTURES_DIR='"$(ASSETS_TEXTURES_DIR_CPP)"' \ + -DSHADERS_DIR='"$(SHADERS_DIR_CPP)"' \ + $(GLFW3_CFLAGS) $(VULKAN_CFLAGS) +if DEBUG +engine_CPPFLAGS += -DNDEBUG +endif +engine_LDFLAGS = -std=gnu++23 -Wall -Wextra +engine_LDADD = $(GLFW3_LIBS) $(VULKAN_LIBS) + +if HAVE_NCURSES +engine_CPPFLAGS += $(NCURSES_CFLAGS) +engine_LDADD += $(NCURSES_LIBS) +endif + +src/engine-stb_image.$(OBJEXT): CXXFLAGS += -Wno-unused-but-set-variable + +src_shaders_shader_spv_rmext_SLANGFLAGS = -target spirv -profile spirv_1_4 -emit-spirv-directly -fvk-use-entrypoint-name -entry vert_main -entry frag_main + +src/shaders/shader.spv.rmext$(EXEEXT): src/shaders/shader.slang + $(SLANGC) $(src_shaders_shader_spv_rmext_SLANGFLAGS) -o $@ $< + +src/shaders/shader.spv: src/shaders/shader.spv.rmext$(EXEEXT) + cp -f $< $@ |
