do not edit — generated by btf.
git.druid.rocksindexmilitantprogrammerastral_canvasMakefile

Makefile


# POSIX / FHS make.
#
# Default prefix is /usr/local (FHS tertiary hierarchy for software
# built on this host). After `sudo make install`:
#   #include <astral/canvas.h>
#   cc main.c -lcanvas
#
# Staged (packaging):
#   make DESTDIR=/tmp/stage install
CC = cc
LIB_DIRNAME = astral
PREFIX = /usr/local
DESTDIR =
 
LIB = canvas
LIB_TITLE = Astral Canvas
MAJOR = 0
VERSION = 0.1.0
 
BUILD = build
PKGS = xcb xcb-icccm xcb-shm xcb-xkb xcb-cursor xkbcommon xkbcommon-x11 wayland-client wayland-cursor vulkan
 
CFLAGS = -O2 -g -std=gnu23 -Wall -Wextra -pedantic -D_GNU_SOURCE -fPIC -Isrc -I$(BUILD) -pthread `pkg-config --cflags $(PKGS)`
LDFLAGS =
LDLIBS = `pkg-config --libs $(PKGS)` -lrt -lpthread
 
WAYLAND_SCANNER = wayland-scanner
WAYLAND_PROTOCOLS = `pkg-config --variable=pkgdatadir wayland-protocols`
GLSLANG = glslangValidator
 
OBJ = \
	$(BUILD)/lib/lib.o \
	$(BUILD)/lib/error.o \
	$(BUILD)/lib/id.o \
	$(BUILD)/lib/queue.o \
	$(BUILD)/api/canvas.o \
	$(BUILD)/api/apiInternal.o \
	$(BUILD)/api/node.o \
	$(BUILD)/platform/platform.o \
	$(BUILD)/platform/x11.o \
	$(BUILD)/platform/wayland.o \
	$(BUILD)/platform/shm.o \
	$(BUILD)/input/input.o \
	$(BUILD)/render/font.o \
	$(BUILD)/render/vk.o \
	$(BUILD)/render/render.o \
	$(BUILD)/xdg-shell-protocol.o \
	$(BUILD)/xdg-decoration-unstable-v1-protocol.o
 
LIBA = $(BUILD)/lib$(LIB).a
LIBSO = $(BUILD)/lib$(LIB).so
LIBSOVER = $(BUILD)/lib$(LIB).so.$(VERSION)
PC = $(BUILD)/$(LIB).pc
 
all: $(LIBA) $(LIBSOVER) $(PC)
 
$(LIBA): $(OBJ)
	ar rcs $(LIBA) $(OBJ)
 
$(LIBSOVER): $(OBJ)
	$(CC) -shared -Wl,-soname,lib$(LIB).so.$(MAJOR) -o $(LIBSOVER) $(OBJ) $(LDFLAGS) $(LDLIBS)
	ln -sf lib$(LIB).so.$(VERSION) $(LIBSO)
	ln -sf lib$(LIB).so.$(VERSION) $(BUILD)/lib$(LIB).so.$(MAJOR)
 
$(PC):
	mkdir -p $(BUILD)
	printf 'prefix=%s\n' $(PREFIX) > $(PC)
	printf 'libdir=$${prefix}/lib\n' >> $(PC)
	printf 'includedir=$${prefix}/include\n' >> $(PC)
	printf '\nName: %s\n' "$(LIB_TITLE)" >> $(PC)
	printf 'Description: %s — C window, input, and UI library\n' "$(LIB_TITLE)" >> $(PC)
	printf 'Version: %s\n' $(VERSION) >> $(PC)
	printf 'Requires.private: %s\n' "$(PKGS)" >> $(PC)
	printf 'Libs: -l%s\n' $(LIB) >> $(PC)
	printf 'Cflags:\n' >> $(PC)
 
install: all
	mkdir -p $(DESTDIR)$(PREFIX)/lib/pkgconfig
	mkdir -p $(DESTDIR)$(PREFIX)/include/$(LIB_DIRNAME)
	cp $(LIBA) $(DESTDIR)$(PREFIX)/lib/lib$(LIB).a
	cp $(LIBSOVER) $(DESTDIR)$(PREFIX)/lib/lib$(LIB).so.$(VERSION)
	ln -sf lib$(LIB).so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/lib$(LIB).so
	ln -sf lib$(LIB).so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/lib$(LIB).so.$(MAJOR)
	cp src/api/canvas.h $(DESTDIR)$(PREFIX)/include/$(LIB_DIRNAME)/canvas.h
	pc_prefix=$(PREFIX); case $$pc_prefix in /*) ;; *) pc_prefix=`pwd`/$$pc_prefix ;; esac; \
	printf 'prefix=%s\n' $$pc_prefix > $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	printf 'libdir=$${prefix}/lib\n' >> $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	printf 'includedir=$${prefix}/include\n' >> $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	printf '\nName: %s\n' "$(LIB_TITLE)" >> $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	printf 'Description: %s — C window, input, and UI library\n' "$(LIB_TITLE)" >> $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	printf 'Version: %s\n' $(VERSION) >> $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	printf 'Requires.private: %s\n' "$(PKGS)" >> $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	printf 'Libs: -l%s\n' $(LIB) >> $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	printf 'Cflags:\n' >> $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	chmod 644 $(DESTDIR)$(PREFIX)/lib/lib$(LIB).a
	chmod 755 $(DESTDIR)$(PREFIX)/lib/lib$(LIB).so.$(VERSION)
	chmod 644 $(DESTDIR)$(PREFIX)/include/$(LIB_DIRNAME)/canvas.h
	chmod 644 $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	if [ -z "$(DESTDIR)" ] && [ "$(PREFIX)" = "/usr/local" ] && [ -d /etc/ld.so.conf.d ]; then \
		printf '%s\n' $(PREFIX)/lib > /etc/ld.so.conf.d/astral-canvas.conf; \
		ldconfig; \
	fi
 
uninstall:
	rm -f $(DESTDIR)$(PREFIX)/lib/lib$(LIB).a
	rm -f $(DESTDIR)$(PREFIX)/lib/lib$(LIB).so
	rm -f $(DESTDIR)$(PREFIX)/lib/lib$(LIB).so.$(MAJOR)
	rm -f $(DESTDIR)$(PREFIX)/lib/lib$(LIB).so.$(VERSION)
	rm -f $(DESTDIR)$(PREFIX)/include/$(LIB_DIRNAME)/canvas.h
	rm -f $(DESTDIR)$(PREFIX)/include/canvas.h
	rm -f $(DESTDIR)$(PREFIX)/include/Astral/canvas.h
	rmdir $(DESTDIR)$(PREFIX)/include/Astral 2>/dev/null || true
	rm -f $(DESTDIR)$(PREFIX)/lib/pkgconfig/$(LIB).pc
	rm -f /etc/ld.so.conf.d/astral-canvas.conf
	rmdir $(DESTDIR)$(PREFIX)/include/$(LIB_DIRNAME) 2>/dev/null || true
	if [ -z "$(DESTDIR)" ] && [ "$(PREFIX)" = "/usr/local" ]; then ldconfig; fi
 
clean:
	rm -rf $(BUILD)
 
$(BUILD)/lib/lib.o: src/lib/lib.c
	mkdir -p $(BUILD)/lib
	$(CC) $(CFLAGS) -c -o $(BUILD)/lib/lib.o src/lib/lib.c
 
$(BUILD)/lib/id.o: src/lib/id.c
	mkdir -p $(BUILD)/lib
	$(CC) $(CFLAGS) -c -o $(BUILD)/lib/id.o src/lib/id.c
 
$(BUILD)/lib/queue.o: src/lib/queue.c
	mkdir -p $(BUILD)/lib
	$(CC) $(CFLAGS) -c -o $(BUILD)/lib/queue.o src/lib/queue.c
 
$(BUILD)/lib/error.o: src/lib/error.c
	mkdir -p $(BUILD)/lib
	$(CC) $(CFLAGS) -c -o $(BUILD)/lib/error.o src/lib/error.c
 
$(BUILD)/api/canvas.o: src/api/canvas.c
	mkdir -p $(BUILD)/api
	$(CC) $(CFLAGS) -c -o $(BUILD)/api/canvas.o src/api/canvas.c
 
$(BUILD)/api/apiInternal.o: src/api/apiInternal.c
	mkdir -p $(BUILD)/api
	$(CC) $(CFLAGS) -c -o $(BUILD)/api/apiInternal.o src/api/apiInternal.c
 
$(BUILD)/api/node.o: src/api/node.c
	mkdir -p $(BUILD)/api
	$(CC) $(CFLAGS) -c -o $(BUILD)/api/node.o src/api/node.c
 
$(BUILD)/platform/platform.o: src/platform/platform.c
	mkdir -p $(BUILD)/platform
	$(CC) $(CFLAGS) -c -o $(BUILD)/platform/platform.o src/platform/platform.c
 
$(BUILD)/platform/x11.o: src/platform/x11.c
	mkdir -p $(BUILD)/platform
	$(CC) $(CFLAGS) -c -o $(BUILD)/platform/x11.o src/platform/x11.c
 
$(BUILD)/platform/wayland.o: src/platform/wayland.c $(BUILD)/xdg-shell-client-protocol.h $(BUILD)/xdg-decoration-unstable-v1-client-protocol.h
	mkdir -p $(BUILD)/platform
	$(CC) $(CFLAGS) -c -o $(BUILD)/platform/wayland.o src/platform/wayland.c
 
$(BUILD)/platform/shm.o: src/platform/shm.c
	mkdir -p $(BUILD)/platform
	$(CC) $(CFLAGS) -c -o $(BUILD)/platform/shm.o src/platform/shm.c
 
$(BUILD)/input/input.o: src/input/input.c
	mkdir -p $(BUILD)/input
	$(CC) $(CFLAGS) -c -o $(BUILD)/input/input.o src/input/input.c
 
$(BUILD)/render/font.o: src/render/font.c
	mkdir -p $(BUILD)/render
	$(CC) $(CFLAGS) -c -o $(BUILD)/render/font.o src/render/font.c
 
$(BUILD)/render/vk.o: src/render/vk.c $(BUILD)/hud.vert.spv.h $(BUILD)/hud.frag.spv.h $(BUILD)/text.vert.spv.h $(BUILD)/text.frag.spv.h
	mkdir -p $(BUILD)/render
	$(CC) $(CFLAGS) -c -o $(BUILD)/render/vk.o src/render/vk.c
 
$(BUILD)/render/render.o: src/render/render.c $(BUILD)/hud.vert.spv.h $(BUILD)/hud.frag.spv.h $(BUILD)/text.vert.spv.h $(BUILD)/text.frag.spv.h
	mkdir -p $(BUILD)/render
	$(CC) $(CFLAGS) -c -o $(BUILD)/render/render.o src/render/render.c
 
$(BUILD)/xdg-shell-protocol.o: $(BUILD)/xdg-shell-protocol.c
	$(CC) $(CFLAGS) -c -o $(BUILD)/xdg-shell-protocol.o $(BUILD)/xdg-shell-protocol.c
 
$(BUILD)/xdg-decoration-unstable-v1-protocol.o: $(BUILD)/xdg-decoration-unstable-v1-protocol.c
	$(CC) $(CFLAGS) -c -o $(BUILD)/xdg-decoration-unstable-v1-protocol.o $(BUILD)/xdg-decoration-unstable-v1-protocol.c
 
$(BUILD)/xdg-shell-client-protocol.h:
	mkdir -p $(BUILD)
	$(WAYLAND_SCANNER) client-header $(WAYLAND_PROTOCOLS)/stable/xdg-shell/xdg-shell.xml $(BUILD)/xdg-shell-client-protocol.h
 
$(BUILD)/xdg-shell-protocol.c:
	mkdir -p $(BUILD)
	$(WAYLAND_SCANNER) private-code $(WAYLAND_PROTOCOLS)/stable/xdg-shell/xdg-shell.xml $(BUILD)/xdg-shell-protocol.c
 
$(BUILD)/xdg-decoration-unstable-v1-client-protocol.h:
	mkdir -p $(BUILD)
	$(WAYLAND_SCANNER) client-header $(WAYLAND_PROTOCOLS)/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml $(BUILD)/xdg-decoration-unstable-v1-client-protocol.h
 
$(BUILD)/xdg-decoration-unstable-v1-protocol.c:
	mkdir -p $(BUILD)
	$(WAYLAND_SCANNER) private-code $(WAYLAND_PROTOCOLS)/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml $(BUILD)/xdg-decoration-unstable-v1-protocol.c
 
$(BUILD)/hud.vert.spv.h: shaders/hud.vert
	mkdir -p $(BUILD)
	$(GLSLANG) -V -S vert -o $(BUILD)/hud.vert.spv shaders/hud.vert
	python3 scripts/spv_to_h.py $(BUILD)/hud.vert.spv $(BUILD)/hud.vert.spv.h hud_vert_spv
 
$(BUILD)/hud.frag.spv.h: shaders/hud.frag
	mkdir -p $(BUILD)
	$(GLSLANG) -V -S frag -o $(BUILD)/hud.frag.spv shaders/hud.frag
	python3 scripts/spv_to_h.py $(BUILD)/hud.frag.spv $(BUILD)/hud.frag.spv.h hud_frag_spv
 
$(BUILD)/text.vert.spv.h: shaders/text.vert
	mkdir -p $(BUILD)
	$(GLSLANG) -V -S vert -o $(BUILD)/text.vert.spv shaders/text.vert
	python3 scripts/spv_to_h.py $(BUILD)/text.vert.spv $(BUILD)/text.vert.spv.h text_vert_spv
 
$(BUILD)/text.frag.spv.h: shaders/text.frag
	mkdir -p $(BUILD)
	$(GLSLANG) -V -S frag -o $(BUILD)/text.frag.spv shaders/text.frag
	python3 scripts/spv_to_h.py $(BUILD)/text.frag.spv $(BUILD)/text.frag.spv.h text_frag_spv
powered by btf.