hikari/Makefile

271 lines
6.6 KiB
Makefile

.ifmake clean
WITH_ALL = YES
.endif
.ifdef WITH_ALL
WITH_XWAYLAND = YES
WITH_SCREENCOPY = YES
WITH_GAMMACONTROL = YES
WITH_LAYERSHELL = YES
WITH_VIRTUAL_INPUT = YES
.endif
OS != uname
VERSION ?= "CURRENT"
PREFIX ?= /usr/local
PKG_CONFIG ?= pkg-config
ETC_PREFIX ?= ${PREFIX}
OBJS = \
action.o \
action_config.o \
binding_config.o \
binding_group.o \
border.o \
command.o \
completion.o \
configuration.o \
cursor.o \
decoration.o \
dnd_mode.o \
exec.o \
font.o \
geometry.o \
group.o \
group_assign_mode.o \
indicator.o \
indicator_bar.o \
indicator_frame.o \
input_buffer.o \
input_grab_mode.o \
keyboard.o \
keyboard_config.o \
layer_shell.o \
layout.o \
layout_config.o \
layout_select_mode.o \
lock_indicator.o \
lock_mode.o \
main.o \
mark.o \
mark_assign_mode.o \
mark_select_mode.o \
maximized_state.o \
memory.o \
move_mode.o \
normal_mode.o \
output.o \
output_config.o \
pointer.o \
pointer_config.o \
position_config.o \
renderer.o \
resize_mode.o \
server.o \
sheet.o \
sheet_assign_mode.o \
split.o \
switch.o \
switch_config.o \
tile.o \
view.o \
view_config.o \
workspace.o \
xdg_view.o
.ifdef WITH_XWAYLAND
OBJS += \
xwayland_unmanaged_view.o \
xwayland_view.o
.endif
WAYLAND_PROTOCOLS != ${PKG_CONFIG} --variable pkgdatadir wayland-protocols
.PHONY: distclean clean clean-doc doc dist install uninstall
.PATH: src
# Allow specification of /extra/ CFLAGS and LDFLAGS
CFLAGS += ${CFLAGS_EXTRA}
LDFLAGS += ${LDFLAGS_EXTRA}
.ifdef DEBUG
CFLAGS += -g -O0 -fsanitize=address
.else
CFLAGS += -DNDEBUG
.endif
.ifdef WITH_POSIX_C_SOURCE
CFLAGS += -D_POSIX_C_SOURCE=200809L
.endif
.ifdef WITH_XWAYLAND
CFLAGS += -DHAVE_XWAYLAND=1
.endif
.ifdef WITH_GAMMACONTROL
CFLAGS += -DHAVE_GAMMACONTROL=1
.endif
.ifdef WITH_SCREENCOPY
CFLAGS += -DHAVE_SCREENCOPY=1
.endif
.ifdef WITH_LAYERSHELL
CFLAGS += -DHAVE_LAYERSHELL=1
.endif
.ifdef WITH_SUID
PERMS = 4555
.else
PERMS = 555
.endif
.ifdef WITH_VIRTUAL_INPUT
CFLAGS += -DHAVE_VIRTUAL_INPUT=1
.endif
CFLAGS += -Wall -I. -Iinclude -DHIKARI_ETC_PREFIX=${ETC_PREFIX}
WLROOTS_CFLAGS != ${PKG_CONFIG} --cflags wlroots
WLROOTS_LIBS != ${PKG_CONFIG} --libs wlroots
WLROOTS_CFLAGS += -DWLR_USE_UNSTABLE=1
PANGO_CFLAGS != ${PKG_CONFIG} --cflags pangocairo
PANGO_LIBS != ${PKG_CONFIG} --libs pangocairo
CAIRO_CFLAGS != ${PKG_CONFIG} --cflags cairo
CAIRO_LIBS != ${PKG_CONFIG} --libs cairo
PIXMAN_CFLAGS != ${PKG_CONFIG} --cflags pixman-1
PIXMAN_LIBS != ${PKG_CONFIG} --libs pixman-1
XKBCOMMON_CFLAGS != ${PKG_CONFIG} --cflags xkbcommon
XKBCOMMON_LIBS != ${PKG_CONFIG} --libs xkbcommon
WAYLAND_CFLAGS != ${PKG_CONFIG} --cflags wayland-server
WAYLAND_LIBS != ${PKG_CONFIG} --libs wayland-server
LIBINPUT_CFLAGS != ${PKG_CONFIG} --cflags libinput
LIBINPUT_LIBS != ${PKG_CONFIG} --libs libinput
UCL_CFLAGS != ${PKG_CONFIG} --cflags libucl
UCL_LIBS != ${PKG_CONFIG} --libs libucl
CFLAGS += \
${WLROOTS_CFLAGS} \
${PANGO_CFLAGS} \
${CAIRO_CFLAGS} \
${PIXMAN_CFLAGS} \
${XKBCOMMON_CFLAGS} \
${WAYLAND_CFLAGS} \
${LIBINPUT_CFLAGS} \
${UCL_CFLAGS}
LIBS = \
${WLROOTS_LIBS} \
${PANGO_LIBS} \
${CAIRO_LIBS} \
${PIXMAN_LIBS} \
${XKBCOMMON_LIBS} \
${WAYLAND_LIBS} \
${LIBINPUT_LIBS} \
${UCL_LIBS}
PROTOCOL_HEADERS = xdg-shell-protocol.h
.ifdef WITH_LAYERSHELL
PROTOCOL_HEADERS += wlr-layer-shell-unstable-v1-protocol.h
.endif
all: hikari hikari-unlocker
version.h:
echo "#define HIKARI_VERSION \"${VERSION}\"" >> version.h
hikari: version.h ${PROTOCOL_HEADERS} ${OBJS}
${CC} ${LDFLAGS} ${CFLAGS} ${INCLUDES} -o ${.TARGET} ${OBJS} ${LIBS}
xdg-shell-protocol.h:
wayland-scanner server-header ${WAYLAND_PROTOCOLS}/stable/xdg-shell/xdg-shell.xml ${.TARGET}
wlr-layer-shell-unstable-v1-protocol.h:
wayland-scanner server-header protocol/wlr-layer-shell-unstable-v1.xml ${.TARGET}
hikari-unlocker: hikari_unlocker.c
${CC} ${CFLAGS_EXTRA} ${LDFLAGS_EXTRA} -o hikari-unlocker hikari_unlocker.c -lpam
clean-doc:
@test -e _darcs && echo "cleaning manpage" ||:
@test -e _darcs && rm share/man/man1/hikari.1 2> /dev/null ||:
clean: clean-doc
@echo "cleaning headers"
@test -e _darcs && rm version.h 2> /dev/null ||:
@rm ${PROTOCOL_HEADERS} 2> /dev/null ||:
@echo "cleaning object files"
@rm ${OBJS} 2> /dev/null ||:
@echo "cleaning executables"
@rm hikari 2> /dev/null ||:
@rm hikari-unlocker 2> /dev/null ||:
share/man/man1/hikari.1:
pandoc -M title:"HIKARI(1) ${VERSION} | hikari - Wayland Compositor" -s \
--to man -o share/man/man1/hikari.1 share/man/man1/hikari.md
doc: share/man/man1/hikari.1
hikari-${VERSION}.tar.gz: version.h share/man/man1/hikari.1
@darcs revert
@tar -s "#^#hikari-${VERSION}/#" -czf hikari-${VERSION}.tar.gz \
version.h \
main.c \
hikari_unlocker.c \
include/hikari/*.h \
src/*.c \
protocol/*.xml \
Makefile \
LICENSE \
README.md \
CoC.md \
CHANGELOG.md \
share/man/man1/hikari.md \
share/man/man1/hikari.1 \
share/backgrounds/hikari/hikari_wallpaper.png \
share/wayland-sessions/hikari.desktop \
etc/hikari/hikari.conf \
etc/pam.d/hikari-unlocker.*
distclean: clean-doc
@test -e _darcs && echo "cleaning version.h" ||:
@test -e _darcs && rm version.h ||:
dist: distclean hikari-${VERSION}.tar.gz
install: hikari hikari-unlocker share/man/man1/hikari.1
mkdir -p ${DESTDIR}/${PREFIX}/bin
mkdir -p ${DESTDIR}/${PREFIX}/share/man/man1
mkdir -p ${DESTDIR}/${PREFIX}/share/backgrounds/hikari
mkdir -p ${DESTDIR}/${PREFIX}/share/wayland-sessions
mkdir -p ${DESTDIR}/${ETC_PREFIX}/etc/hikari
mkdir -p ${DESTDIR}/${ETC_PREFIX}/etc/pam.d
sed "s,PREFIX,${PREFIX}," etc/hikari/hikari.conf > ${DESTDIR}/${ETC_PREFIX}/etc/hikari/hikari.conf
chmod 644 ${DESTDIR}/${ETC_PREFIX}/etc/hikari/hikari.conf
install -m ${PERMS} hikari ${DESTDIR}/${PREFIX}/bin
install -m 4555 hikari-unlocker ${DESTDIR}/${PREFIX}/bin
install -m 644 share/man/man1/hikari.1 ${DESTDIR}/${PREFIX}/share/man/man1
install -m 644 share/backgrounds/hikari/hikari_wallpaper.png ${DESTDIR}/${PREFIX}/share/backgrounds/hikari/hikari_wallpaper.png
install -m 644 share/wayland-sessions/hikari.desktop ${DESTDIR}/${PREFIX}/share/wayland-sessions/hikari.desktop
install -m 644 etc/pam.d/hikari-unlocker.${OS} ${DESTDIR}/${ETC_PREFIX}/etc/pam.d/hikari-unlocker
uninstall:
-rm ${DESTDIR}/${PREFIX}/bin/hikari
-rm ${DESTDIR}/${PREFIX}/bin/hikari-unlocker
-rm ${DESTDIR}/${PREFIX}/share/man/man1/hikari.1
-rm ${DESTDIR}/${PREFIX}/share/backgrounds/hikari/hikari_wallpaper.png
-rm ${DESTDIR}/${PREFIX}/share/wayland-sessions/hikari.desktop
-rm ${DESTDIR}/${ETC_PREFIX}/etc/pam.d/hikari-unlocker
-rm ${DESTDIR}/${ETC_PREFIX}/etc/hikari/hikari.conf
-rmdir ${DESTDIR}/${ETC_PREFIX}/etc/hikari
-rmdir ${DESTDIR}/${PREFIX}/share/backgrounds/hikari