summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile275
1 files changed, 131 insertions, 144 deletions
diff --git a/Makefile b/Makefile
index 358443e..312e062 100644
--- a/Makefile
+++ b/Makefile
@@ -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