main makefile
  1RELEASE_flags=-DNDEBUG -O2 -g0 -s
  2DEBUG_flags=-std=c99 -D_POSIX_C_SOURCE=199309L -DDEBUG -Wall -Wno-unknown-pragmas -Wpedantic -Wshadow -Wextra -Werror=implicit-int -Werror=incompatible-pointer-types -Werror=int-conversion -Wvla -g -Og -fsanitize=address -fsanitize=undefined
  3PREFIX=${HOME}/.local
  4
  5WAYLAND_SCANNER=wayland-scanner
  6XDG_XML=`pkg-config --variable=pkgdatadir wayland-protocols`/stable/xdg-shell/xdg-shell.xml
  7WLR_XML=src/wlr-layer-shell-unstable-v1.xml
  8
  9PROTO_C=src/xdg-shell-protocol.c src/wlr-layer-shell-client-protocol.c
 10PROTO_H=src/xdg-shell-client-protocol.h src/wlr-layer-shell-client-protocol.h
 11# add audio backend of choice there is only libpulse, alsa, jack and sndio oss i am not sure of
 12LIBS=`pkg-config --cflags --libs wayland-client xkbcommon alsa`
 13
 14run: bin/uxn12 bin/m_pc.rom bin/perifs.rom
 15	bin/uxn12 bin/m_pc.rom bin/perifs.rom run
 16gui: bin/uxn12 bin/screen.rom
 17	bin/uxn12 bin/screen.rom
 18test: bin/uxn12-debug tests
 19	@ -bin/uxn12-debug
 20	@ -bin/uxn12-debug -v
 21	@ bin/uxn12-debug bin/opctest.rom
 22	@ bin/uxn12-debug bin/system.rom
 23	@ printf "ghi" | bin/uxn12-debug bin/console.rom "abc" "def"
 24	@ bin/uxn12-debug bin/file.rom
 25	@ bin/uxn12-debug bin/datetime.rom
 26clean:
 27	rm -fr bin $(PROTO_C) $(PROTO_H)
 28format:
 29	clang-format -i src/uxn12.c
 30install: bin/uxn12
 31	mkdir -p ${PREFIX}/bin
 32	cp bin/uxn12 ${PREFIX}/bin
 33	mkdir -p ${PREFIX}/share/man/man7
 34	cp doc/man/uxntal.7 ${PREFIX}/share/man/man7
 35uninstall:
 36	rm -f ${PREFIX}/bin/uxn12
 37grab:
 38	cp ../drifblim/etc/drifblim.rom.txt etc/utils/
 39	cp ../uxn-utils/cli/opctest/src/opctest.tal etc/tests/
 40	cp ../uxn-utils/gui/perifs/src/perifs.tal etc/tests/
 41	cp ../m_pc/src/m_pc.tal etc/utils/
 42archive:
 43	cp src/uxn12.c ../oscean/etc/uxn12.c.txt
 44	cp doc/man/uxntal.7 ../oscean/etc/uxntal.7.txt
 45	cp etc/tests/system.tal ../oscean/etc/varvara.system.tal.txt
 46	cp etc/tests/console.tal ../oscean/etc/varvara.console.tal.txt
 47	cp etc/tests/perifs.tal ../oscean/etc/varvara.perifs.tal.txt
 48	cp etc/tests/file.tal ../oscean/etc/varvara.file.tal.txt
 49	cp etc/tests/datetime.tal ../oscean/etc/varvara.datetime.tal.txt
 50	cp etc/tests/audio.tal ../oscean/etc/varvara.audio.tal.txt
 51
 52.PHONY: run test clean format install uninstall grab archive
 53
 54bin/uxn12: src/uxn12.c $(PROTO_C) $(PROTO_H)
 55	mkdir -p bin
 56	cc ${RELEASE_flags} ${CFLAGS} -s src/uxn12.c $(PROTO_C) $(LIBS) -ldl -lm -lpthread -o bin/uxn12
 57bin/uxn12-debug: src/uxn12.c $(PROTO_C) $(PROTO_H)
 58	mkdir -p bin
 59	cc ${DEBUG_flags} ${CFLAGS} -s src/uxn12.c $(PROTO_C) $(LIBS) -ldl -lm -lpthread -o bin/uxn12-debug
 60
 61# Tools
 62
 63bin/drifblim.rom: bin/uxn12 etc/utils/drifblim.rom.txt
 64	@ cat etc/utils/drifblim.rom.txt | bin/uxn12 etc/utils/xh.rom > bin/drifblim.rom
 65bin/m_pc.rom: bin/uxn12 bin/drifblim.rom etc/utils/m_pc.tal
 66	@ bin/uxn12 bin/drifblim.rom etc/utils/m_pc.tal bin/m_pc.rom
 67
 68# Tests
 69
 70tests: bin/audio.rom bin/opctest.rom bin/system.rom bin/console.rom bin/screen.rom bin/perifs.rom bin/file.rom bin/datetime.rom
 71
 72bin/opctest.rom: bin/uxn12 bin/drifblim.rom etc/tests/opctest.tal
 73	@ bin/uxn12 bin/drifblim.rom etc/tests/opctest.tal bin/opctest.rom
 74bin/system.rom: bin/uxn12 bin/drifblim.rom etc/tests/system.tal
 75	@ bin/uxn12 bin/drifblim.rom etc/tests/system.tal bin/system.rom
 76bin/console.rom: bin/uxn12 bin/drifblim.rom etc/tests/console.tal
 77	@ bin/uxn12 bin/drifblim.rom etc/tests/console.tal bin/console.rom
 78bin/screen.rom: bin/uxn12 bin/drifblim.rom etc/tests/screen.bounds.tal
 79	@ bin/uxn12 bin/drifblim.rom etc/tests/screen.bounds.tal bin/screen.rom
 80bin/perifs.rom: bin/uxn12 bin/drifblim.rom etc/tests/perifs.tal
 81	@ bin/uxn12 bin/drifblim.rom etc/tests/perifs.tal bin/perifs.rom
 82bin/file.rom: bin/uxn12 bin/drifblim.rom etc/tests/file.tal
 83	@ bin/uxn12 bin/drifblim.rom etc/tests/file.tal bin/file.rom
 84bin/datetime.rom: bin/uxn12 bin/drifblim.rom etc/tests/datetime.tal
 85	@ bin/uxn12 bin/drifblim.rom etc/tests/datetime.tal bin/datetime.rom
 86bin/audio.rom: bin/uxn12 bin/drifblim.rom etc/tests/audio.tal
 87	@ bin/uxn12 bin/drifblim.rom etc/tests/audio.tal bin/audio.rom
 88
 89
 90src/xdg-shell-client-protocol.h:
 91	@$(WAYLAND_SCANNER) client-header $(XDG_XML) $@
 92
 93src/xdg-shell-protocol.c:
 94	@$(WAYLAND_SCANNER) private-code $(XDG_XML) $@
 95
 96src/wlr-layer-shell-client-protocol.h: $(WLR_XML)
 97	@$(WAYLAND_SCANNER) client-header $(WLR_XML) $@
 98
 99src/wlr-layer-shell-client-protocol.c: $(WLR_XML)
100	@$(WAYLAND_SCANNER) private-code $(WLR_XML) $@