diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 275 |
1 files changed, 131 insertions, 144 deletions
@@ -1,149 +1,136 @@ -.POSIX: - -target = c2 -data_dir = data -shaders = \ - $(data_dir)/triangle.csh \ - $(data_dir)/ui.csh \ - $(data_dir)/surface.csh \ - $(data_dir)/surface_depthonly.csh \ - $(data_dir)/sky.csh \ - $(data_dir)/mip_spec.csh -textures = \ - $(data_dir)/22.tex \ - $(data_dir)/kita.tex \ - $(data_dir)/brick_albedo.tex \ - $(data_dir)/brick_ao.tex \ - $(data_dir)/brick_normal.tex \ - $(data_dir)/sky.tex -models = $(data_dir)/monkey.mdl -materials = $(data_dir)/bricks.mat $(data_dir)/plastic.mat -packed_files = $(shaders) $(textures) $(models) $(materials) -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 - -convmaterial: convmaterial.c | qstd cfg - $(CC) $(cflags) convmaterial.c $(lflags) -Lqstd -lqstd -Lcfg -lcfg -o convmaterial - -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/surface_depthonly.csh: intermediate/surface_depthonly.glsl | $(data_dir) sc - ./sc/sc intermediate/surface_depthonly.glsl $(data_dir)/surface_depthonly.csh - -data/sky.csh: intermediate/sky.glsl | $(data_dir) sc - ./sc/sc intermediate/sky.glsl $(data_dir)/sky.csh - -data/mip_spec.csh: intermediate/mip_spec.glsl | $(data_dir) sc - ./sc/sc intermediate/mip_spec.glsl $(data_dir)/mip_spec.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/brick_albedo.tex: intermediate/brick_albedo.bmp | $(data_dir) convtexture - ./convtexture intermediate/brick_albedo.bmp $(data_dir)/brick_albedo.tex bc1 - -data/brick_ao.tex: intermediate/brick_ao.bmp | $(data_dir) convtexture - ./convtexture intermediate/brick_ao.bmp $(data_dir)/brick_ao.tex bc4 - -data/brick_normal.tex: intermediate/brick_normal.bmp | $(data_dir) convtexture - ./convtexture intermediate/brick_normal.bmp $(data_dir)/brick_normal.tex bc5 - -data/sky.tex: intermediate/sky.hdr | $(data_dir) convtexture - ./convtexture intermediate/sky.hdr $(data_dir)/sky.tex rgba16f - -data/monkey.mdl: intermediate/monkey.glb $(shaders) | $(data_dir) convmodel - ./convmodel $(data_dir) intermediate/monkey.glb $(data_dir)/monkey.mdl - -data/bricks.mat: intermediate/bricks.mat | $(data_dir) convmaterial - ./convmaterial intermediate/bricks.mat $(data_dir)/bricks.mat - -data/plastic.mat: intermediate/plastic.mat | $(data_dir) convmaterial - ./convmaterial intermediate/plastic.mat $(data_dir)/plastic.mat - -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) +# generated by configure.lua + +cflags = -pedantic -Wall -Wextra -Dplat_x11 -Dplat_x86 -Dplat_posix -Dallocation_default_alignment=8 -Icfg -Iqstd -Isc/glslang -MMD -MF $(basename $@).d + +.PHONY: all clean +all: c2 + +ifndef config + config=debug +endif +ifeq ($(config),debug) + opt_com = -DDEBUG -g -O0 + opt_lnk = +endif +ifeq ($(config),release) + opt_com = -DNDEBUG -O3 + opt_lnk = -s +endif + +qstd/memory.o: qstd/memory.c + gcc -std=gnu99 $(opt_com) $(cflags) -c qstd/memory.c -o qstd/memory.o +qstd/plat.o: qstd/plat.c + gcc -std=gnu99 $(opt_com) $(cflags) -c qstd/plat.c -o qstd/plat.o +qstd/str.o: qstd/str.c + gcc -std=gnu99 $(opt_com) $(cflags) -c qstd/str.c -o qstd/str.o +qstd/pack.o: qstd/pack.c + gcc -std=gnu99 $(opt_com) $(cflags) -c qstd/pack.c -o qstd/pack.o +libqstd.a: qstd/memory.o qstd/plat.o qstd/str.o qstd/pack.o + ar -rcs libqstd.a qstd/memory.o qstd/plat.o qstd/str.o qstd/pack.o + +cfg/cfgparse.o: cfg/cfgparse.c + gcc -std=gnu99 $(opt_com) $(cflags) -c cfg/cfgparse.c -o cfg/cfgparse.o +libcfg.a: cfg/cfgparse.o + ar -rcs libcfg.a cfg/cfgparse.o + +sc/sc.o: sc/sc.cpp + g++ -std=c++20 $(opt_com) $(cflags) -c sc/sc.cpp -o sc/sc.o +sc/includer.o: sc/includer.cpp + g++ -std=c++20 $(opt_com) $(cflags) -c sc/includer.cpp -o sc/includer.o +shadercompiler: sc/sc.o sc/includer.o libqstd.a libcfg.a + g++ $(opt_lnk) $(lflags) -o shadercompiler sc/sc.o sc/includer.o libqstd.a libcfg.a -Lsc/glslang/build/glslang -Lsc/glslang/build/SPIRV -Lsc/glslang/build/glslang/OSDependent/Unix -Lsc/glslang/build/External/spirv-tools/source -Lsc/glslang/build/External/spirv-tools/source/link -Lsc/glslang/build/External/spirv-tools/source/opt -lglslang -lglslang-default-resource-limits -lSPIRV -lMachineIndependent -lSPVRemapper -lOSDependent -lGenericCodeGen -lSPIRV-Tools-link -lSPIRV-Tools-opt -lSPIRV-Tools + +app.o: app.cpp + g++ -std=c++20 $(opt_com) $(cflags) -c app.cpp -o app.o +c2.o: c2.cpp + g++ -std=c++20 $(opt_com) $(cflags) -c c2.cpp -o c2.o +video.o: video.cpp + g++ -std=c++20 $(opt_com) $(cflags) -c video.cpp -o video.o +pipeline.o: pipeline.cpp + g++ -std=c++20 $(opt_com) $(cflags) -c pipeline.cpp -o pipeline.o +asset.o: asset.cpp + g++ -std=c++20 $(opt_com) $(cflags) -c asset.cpp -o asset.o +ui.o: ui.cpp + g++ -std=c++20 $(opt_com) $(cflags) -c ui.cpp -o ui.o +maths.o: maths.cpp + g++ -std=c++20 $(opt_com) $(cflags) -c maths.cpp -o maths.o +model.o: model.cpp + g++ -std=c++20 $(opt_com) $(cflags) -c model.cpp -o model.o +c2: app.o c2.o video.o pipeline.o asset.o ui.o maths.o model.o libqstd.a + g++ $(opt_lnk) $(lflags) -o c2 app.o c2.o video.o pipeline.o asset.o ui.o maths.o model.o libqstd.a -lX11 -lm + +c2: pack + +convtexture.o: convtexture.c + gcc -std=gnu99 $(opt_com) $(cflags) -c convtexture.c -o convtexture.o +convtexture: convtexture.o libqstd.a + gcc $(opt_lnk) $(lflags) -o convtexture convtexture.o libqstd.a + +convmodel.o: convmodel.c + gcc -std=gnu99 $(opt_com) $(cflags) -c convmodel.c -o convmodel.o +convmodel: convmodel.o libqstd.a + gcc $(opt_lnk) $(lflags) -o convmodel convmodel.o libqstd.a + +convmaterial.o: convmaterial.c + gcc -std=gnu99 $(opt_com) $(cflags) -c convmaterial.c -o convmaterial.o +convmaterial: convmaterial.o libqstd.a libcfg.a + gcc $(opt_lnk) $(lflags) -o convmaterial convmaterial.o libqstd.a libcfg.a + +packer.o: packer.c + gcc -std=gnu99 $(opt_com) $(cflags) -c packer.c -o packer.o +packer: packer.o libqstd.a + gcc $(opt_lnk) $(lflags) -o packer packer.o libqstd.a + +data/triangle.csh: intermediate/triangle.glsl shadercompiler | data + ./shadercompiler intermediate/triangle.glsl data/triangle.csh +data/ui.csh: intermediate/ui.glsl shadercompiler | data + ./shadercompiler intermediate/ui.glsl data/ui.csh +data/surface.csh: intermediate/surface.glsl shadercompiler | data + ./shadercompiler intermediate/surface.glsl data/surface.csh +data/surface_depthonly.csh: intermediate/surface_depthonly.glsl shadercompiler | data + ./shadercompiler intermediate/surface_depthonly.glsl data/surface_depthonly.csh +data/sky.csh: intermediate/sky.glsl shadercompiler | data + ./shadercompiler intermediate/sky.glsl data/sky.csh +data/mip_spec.csh: intermediate/mip_spec.glsl shadercompiler | data + ./shadercompiler intermediate/mip_spec.glsl data/mip_spec.csh + +data/monkey.mdl: convmodel intermediate/monkey.glb data/triangle.csh data/ui.csh data/surface.csh data/surface_depthonly.csh data/sky.csh data/mip_spec.csh | data + ./convmodel data intermediate/monkey.glb data/monkey.mdl + +data/22.tex: convtexture intermediate/22.bmp | data + ./convtexture intermediate/22.bmp data/22.tex bc1 +data/kita.tex: convtexture intermediate/kita.bmp | data + ./convtexture intermediate/kita.bmp data/kita.tex bc1 +data/brick_albedo.tex: convtexture intermediate/brick_albedo.bmp | data + ./convtexture intermediate/brick_albedo.bmp data/brick_albedo.tex bc1 +data/brick_ao.tex: convtexture intermediate/brick_ao.bmp | data + ./convtexture intermediate/brick_ao.bmp data/brick_ao.tex bc4 +data/brick_normal.tex: convtexture intermediate/brick_normal.bmp | data + ./convtexture intermediate/brick_normal.bmp data/brick_normal.tex bc5 +data/sky.tex: convtexture intermediate/sky.hdr | data + ./convtexture intermediate/sky.hdr data/sky.tex rgba16f + +data/bricks.mat: convmaterial intermediate/bricks.mat | data + ./convmaterial intermediate/bricks.mat data/bricks.mat +data/plastic.mat: convmaterial intermediate/plastic.mat | data + ./convmaterial intermediate/plastic.mat data/plastic.mat + +pack: packer data/triangle.csh data/ui.csh data/surface.csh data/surface_depthonly.csh data/sky.csh data/mip_spec.csh data/monkey.mdl data/22.tex data/kita.tex data/brick_albedo.tex data/brick_ao.tex data/brick_normal.tex data/sky.tex data/bricks.mat data/plastic.mat + ./packer pack data triangle.csh ui.csh surface.csh surface_depthonly.csh sky.csh mip_spec.csh monkey.mdl 22.tex kita.tex brick_albedo.tex brick_ao.tex brick_normal.tex sky.tex bricks.mat plastic.mat + +data: + mkdir -p data + +-include qstd/memory.d qstd/plat.d qstd/str.d qstd/pack.d cfg/cfgparse.d sc/sc.d sc/includer.d app.d c2.d video.d pipeline.d asset.d ui.d maths.d model.d convtexture.d convmodel.d convmaterial.d packer.d clean: - rm -rf $(data_dir) - rm -f $(objects) - rm -f $(objects:%.o=%.d) - rm packer.d - rm -f $(targets) + rm -f qstd/memory.o qstd/plat.o qstd/str.o qstd/pack.o cfg/cfgparse.o sc/sc.o sc/includer.o app.o c2.o video.o pipeline.o asset.o ui.o maths.o model.o convtexture.o convmodel.o convmaterial.o packer.o qstd/memory.d qstd/plat.d qstd/str.d qstd/pack.d cfg/cfgparse.d sc/sc.d sc/includer.d app.d c2.d video.d pipeline.d asset.d ui.d maths.d model.d convtexture.d convmodel.d convmaterial.d packer.d data/triangle.csh data/ui.csh data/surface.csh data/surface_depthonly.csh data/sky.csh data/mip_spec.csh data/monkey.mdl data/22.tex data/kita.tex data/brick_albedo.tex data/brick_ao.tex data/brick_normal.tex data/sky.tex data/bricks.mat data/plastic.mat + rm -f shadercompiler + rmdir data + rm -f c2 rm -f convtexture rm -f convmodel - rm -f packer - make -C qstd clean - make -C cfg clean - make -C sc clean + rm -f convmaterial + rm -f libqstd.a + rm -f libcfg.a --include $(objects:%.o=%.d) --include packer.d |