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) $@