271 lines
6.6 KiB
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
|