.POSIX: target = c2 data_dir = data shaders = $(data_dir)/triangle.csh $(data_dir)/ui.csh $(data_dir)/surface.csh textures = $(data_dir)/22.tex $(data_dir)/kita.tex models = $(data_dir)/monkey.mdl packed_files = $(shaders) $(textures) $(models) tools = qstd cfg sc objects = app.o c2.o video.o pipeline.o asset.o ui.o maths.o model.o includes = -Iqstd defines = -Dplat_x86 -Dplat_posix -Dplat_x11 -Dallocation_default_alignment=8 cflags = -MMD -MF $(basename $@).d $(includes) $(defines) $(DEBUG_COMPILE_FLAG) libs = -lX11 -lm lflags = $(libs) $(DEBUG_LINK_FLAG) .PHONY: all clean $(tools) all: $(target) $(shaders) $(tools) $(objects) pack qstd: $(MAKE) -C qstd cfg: qstd $(MAKE) -C cfg sc: qstd cfg $(MAKE) -C sc packer: packer.c | qstd $(CC) $(cflags) packer.c $(lflags) -Lqstd -lqstd -o packer convtexture: convtexture.c | qstd $(CC) $(cflags) convtexture.c $(lflags) -Lqstd -lqstd -o convtexture convmodel: convmodel.c | qstd $(CC) $(cflags) convmodel.c $(lflags) -Lqstd -lqstd -o convmodel pack: $(packed_files) packer ./packer pack $(data_dir) $(notdir $(packed_files)) data/triangle.csh: intermediate/triangle.glsl | $(data_dir) sc ./sc/sc intermediate/triangle.glsl $(data_dir)/triangle.csh data/ui.csh: intermediate/ui.glsl | $(data_dir) sc ./sc/sc intermediate/ui.glsl $(data_dir)/ui.csh data/surface.csh: intermediate/surface.glsl | $(data_dir) sc ./sc/sc intermediate/surface.glsl $(data_dir)/surface.csh data/22.tex: intermediate/22.bmp | $(data_dir) convtexture ./convtexture intermediate/22.bmp $(data_dir)/22.tex bc1 data/kita.tex: intermediate/kita.bmp | $(data_dir) convtexture ./convtexture intermediate/kita.bmp $(data_dir)/kita.tex bc1 data/monkey.mdl: intermediate/monkey.glb $(shaders) | $(data_dir) convmodel ./convmodel $(data_dir) intermediate/monkey.glb $(data_dir)/monkey.mdl app.o: $(CXX) -c $(cflags) app.cpp -o app.o video.o: $(CXX) -c $(cflags) video.cpp -o video.o pipeline.o: $(CXX) -c $(cflags) pipeline.cpp -o pipeline.o asset.o: $(CXX) -c $(cflags) asset.cpp -o asset.o ui.o: $(CXX) -c $(cflags) ui.cpp -o ui.o maths.o: $(CXX) -c $(cflags) maths.cpp -o maths.o model.o: $(CXX) -c $(cflags) model.cpp -o model.o c2.o: $(CXX) -c $(cflags) c2.cpp -o c2.o $(target): $(objects) qstd/libqstd.a $(CXX) $(objects) $(lflags) -o $(target) -Lqstd -lqstd qstd/libqstd.a: $(MAKE) -C qstd $(data_dir): mkdir -p $(data_dir) clean: rm -rf $(data_dir) rm -f $(objects) rm -f $(targets) rm -f convtexture rm -f convmodel rm -f packer make -C qstd clean make -C cfg clean make -C sc clean -include $(objects:%.o=%.d) -include packer.d