mirror of
https://github.com/Cloudef/bemenu
synced 2025-02-13 21:16:52 +00:00
It works on Wayland and X11 and acts as a complement to margin. Exact behavior is as follows: - If width factor is 0, width minus margin is used. - If width multiplied by factor is greater than width minus margin, width minus is used. (so margin may be used to make sure that bemenu is at least N pixels away from the view border) - Otherwise width multiplied by factor is used. I think it's fine to disable warnings about floating point numbers comparision. We don't do any arithmetics on them anyway, so we can't suffer from inaccuracy.
168 lines
7.1 KiB
Makefile
168 lines
7.1 KiB
Makefile
VERSION ?= $(shell cat VERSION)
|
|
PREFIX ?= /usr/local
|
|
includedir ?= /include
|
|
bindir ?= /bin
|
|
libdir ?= /lib
|
|
mandir ?= /share/man/man1
|
|
|
|
GIT_SHA1 = $(shell git rev-parse HEAD 2>/dev/null || printf 'nogit')
|
|
GIT_TAG = $(shell git tag --points-at HEAD 2>/dev/null || cat VERSION)
|
|
MAKEFLAGS += --no-builtin-rules
|
|
|
|
WARNINGS = -Wall -Wextra -Wpedantic -Wformat=2 -Wstrict-aliasing=3 -Wstrict-overflow=5 -Wstack-usage=12500 \
|
|
-Wcast-align -Wpointer-arith -Wchar-subscripts -Warray-bounds=2 -Wno-unknown-warning-option
|
|
|
|
override CFLAGS ?= -g -O2 $(WARNINGS) $(EXTRA_WARNINGS)
|
|
override CFLAGS += -std=c99
|
|
override CPPFLAGS ?= -D_FORTIFY_SOURCE=2
|
|
override CPPFLAGS += -DBM_VERSION=\"$(VERSION)\" -DBM_PLUGIN_VERSION=\"$(VERSION)-$(GIT_SHA1)\" -DINSTALL_LIBDIR=\"$(PREFIX)$(libdir)\"
|
|
override CPPFLAGS += -D_DEFAULT_SOURCE -Ilib
|
|
|
|
libs = libbemenu.so
|
|
pkgconfigs = bemenu.pc
|
|
bins = bemenu bemenu-run
|
|
mans = bemenu.1
|
|
renderers = bemenu-renderer-x11.so bemenu-renderer-curses.so bemenu-renderer-wayland.so
|
|
all: $(bins) $(renderers) $(mans)
|
|
clients: $(bins)
|
|
curses: bemenu-renderer-curses.so
|
|
x11: bemenu-renderer-x11.so
|
|
wayland: bemenu-renderer-wayland.so
|
|
|
|
# support non git builds
|
|
.git/index:
|
|
mkdir -p .git
|
|
touch .git/index
|
|
|
|
%.a:
|
|
$(LINK.c) -c $(filter %.c,$^) $(LDLIBS) -o $@
|
|
|
|
$(libs): private override full=$(addsuffix .$(VERSION), $@)
|
|
$(libs): private override major=$(addsuffix .$(firstword $(subst ., ,$(VERSION))), $@)
|
|
$(libs): %: VERSION .git/index
|
|
$(LINK.c) -shared -fPIC $(filter %.c %.a,$^) $(LDLIBS) -o $(full) -Wl,-soname,$(major)
|
|
ln -fs $(full) $(major)
|
|
ln -fs $(full) $@
|
|
|
|
$(pkgconfigs): %: VERSION %.in
|
|
sed "s/@VERSION@/$(VERSION)/;s,@PREFIX@,$(PREFIX),;s,@LIBDIR@,$(libdir),;s,@INCLUDEDIR@,$(includedir)," $(addsuffix .in, $@) > $@
|
|
|
|
bemenu.1: man/bemenu.1.in
|
|
sed 's,@LIBDIR@,$(PREFIX)$(libdir),' $< > $@
|
|
|
|
$(renderers): %: VERSION .git/index | $(libs)
|
|
$(LINK.c) -shared -fPIC $(filter %.c %.a,$^) $(LDLIBS) -L. -lbemenu -o $@
|
|
|
|
$(bins): %: | $(libs)
|
|
$(LINK.c) $(filter %.c %.a,$^) $(LDLIBS) -L. -lbemenu -o $@
|
|
|
|
cdl.a: private override LDFLAGS += -fPIC
|
|
cdl.a: lib/3rdparty/cdl.c lib/3rdparty/cdl.h
|
|
|
|
libbemenu.so: private override LDLIBS += -ldl
|
|
libbemenu.so: lib/bemenu.h lib/internal.h lib/filter.c lib/item.c lib/library.c lib/list.c lib/menu.c lib/util.c cdl.a
|
|
|
|
bemenu-renderer-curses.so: private override LDLIBS += $(shell pkg-config --libs ncursesw) -lm
|
|
bemenu-renderer-curses.so: private override CPPFLAGS += $(shell pkg-config --cflags-only-I ncursesw)
|
|
bemenu-renderer-curses.so: lib/renderers/curses/curses.c
|
|
|
|
bemenu-renderer-x11.so: private override LDLIBS += $(shell pkg-config --libs x11 xinerama cairo pango pangocairo)
|
|
bemenu-renderer-x11.so: private override CPPFLAGS += $(shell pkg-config --cflags-only-I x11 xinerama cairo pango pangocairo)
|
|
bemenu-renderer-x11.so: lib/renderers/cairo_renderer.h lib/renderers/x11/x11.c lib/renderers/x11/x11.h lib/renderers/x11/window.c lib/renderers/x11/xkb_unicode.c lib/renderers/x11/xkb_unicode.h
|
|
|
|
lib/renderers/wayland/xdg-shell.c:
|
|
wayland-scanner private-code < "$$(pkg-config --variable=pkgdatadir wayland-protocols)/stable/xdg-shell/xdg-shell.xml" > $@
|
|
|
|
lib/renderers/wayland/wlr-layer-shell-unstable-v1.h: lib/renderers/wayland/wlr-layer-shell-unstable-v1.xml
|
|
wayland-scanner client-header < $^ > $@
|
|
|
|
lib/renderers/wayland/wlr-layer-shell-unstable-v1.c: lib/renderers/wayland/wlr-layer-shell-unstable-v1.xml
|
|
wayland-scanner private-code < $^ > $@
|
|
|
|
lib/renderers/wayland/xdg-output-unstable-v1.h: lib/renderers/wayland/xdg-output-unstable-v1.xml
|
|
wayland-scanner client-header < $^ > $@
|
|
|
|
lib/renderers/wayland/xdg-output-unstable-v1.c: lib/renderers/wayland/xdg-output-unstable-v1.xml
|
|
wayland-scanner private-code < $^ > $@
|
|
|
|
xdg-shell.a: private override LDFLAGS += -fPIC
|
|
xdg-shell.a: private override CPPFLAGS += $(shell pkg-config --cflags-only-I wayland-client)
|
|
xdg-shell.a: lib/renderers/wayland/xdg-shell.c
|
|
wlr-layer-shell.a: private override LDFLAGS += -fPIC
|
|
wlr-layer-shell.a: private override CPPFLAGS += $(shell pkg-config --cflags-only-I wayland-client)
|
|
wlr-layer-shell.a: lib/renderers/wayland/wlr-layer-shell-unstable-v1.c lib/renderers/wayland/wlr-layer-shell-unstable-v1.h
|
|
xdg-output.a: private override LDFLAGS += -fPIC
|
|
xdg-output.a: private override CPPFLAGS += $(shell pkg-config --cflags-only-I wayland-client)
|
|
xdg-output.a: lib/renderers/wayland/xdg-output-unstable-v1.c lib/renderers/wayland/xdg-output-unstable-v1.h
|
|
bemenu-renderer-wayland.so: private override LDLIBS += $(shell pkg-config --libs wayland-client cairo pango pangocairo xkbcommon)
|
|
bemenu-renderer-wayland.so: private override CPPFLAGS += $(shell pkg-config --cflags-only-I wayland-client cairo pango pangocairo xkbcommon)
|
|
bemenu-renderer-wayland.so: lib/renderers/cairo_renderer.h lib/renderers/wayland/wayland.c lib/renderers/wayland/wayland.h lib/renderers/wayland/registry.c lib/renderers/wayland/window.c xdg-shell.a wlr-layer-shell.a xdg-output.a
|
|
|
|
common.a: client/common/common.c client/common/common.h
|
|
bemenu: common.a client/bemenu.c
|
|
bemenu-run: common.a client/bemenu-run.c
|
|
|
|
install-pkgconfig: $(pkgconfigs)
|
|
mkdir -p "$(DESTDIR)$(PREFIX)$(libdir)/pkgconfig"
|
|
cp $^ "$(DESTDIR)$(PREFIX)$(libdir)/pkgconfig"
|
|
|
|
install-include: lib/bemenu.h
|
|
mkdir -p "$(DESTDIR)$(PREFIX)$(includedir)"
|
|
cp $^ "$(DESTDIR)$(PREFIX)$(includedir)"
|
|
|
|
install-libs: $(libs)
|
|
mkdir -p "$(DESTDIR)$(PREFIX)$(libdir)"
|
|
cp $(addsuffix .$(VERSION), $^) "$(DESTDIR)$(PREFIX)$(libdir)"
|
|
|
|
install-lib-symlinks: $(libs) | install-libs
|
|
cp -RP $^ $(addsuffix .$(firstword $(subst ., ,$(VERSION))), $^) "$(DESTDIR)$(PREFIX)$(libdir)"
|
|
|
|
install-bins:
|
|
mkdir -p "$(DESTDIR)$(PREFIX)$(bindir)"
|
|
-cp $(bins) "$(DESTDIR)$(PREFIX)$(bindir)"
|
|
-chmod 0755 $(addprefix "$(DESTDIR)$(PREFIX)$(bindir)"/,$(bins))
|
|
|
|
install-man: bemenu.1
|
|
mkdir -p "$(DESTDIR)$(PREFIX)$(mandir)"
|
|
cp $< "$(DESTDIR)$(PREFIX)$(mandir)"
|
|
|
|
install-renderers: install-curses install-wayland install-x11
|
|
|
|
install-curses:
|
|
mkdir -p "$(DESTDIR)$(PREFIX)$(libdir)/bemenu"
|
|
-cp bemenu-renderer-curses.so "$(DESTDIR)$(PREFIX)$(libdir)/bemenu"
|
|
|
|
install-wayland:
|
|
mkdir -p "$(DESTDIR)$(PREFIX)$(libdir)/bemenu"
|
|
-cp bemenu-renderer-wayland.so "$(DESTDIR)$(PREFIX)$(libdir)/bemenu"
|
|
|
|
install-x11:
|
|
mkdir -p "$(DESTDIR)$(PREFIX)$(libdir)/bemenu"
|
|
-cp bemenu-renderer-x11.so "$(DESTDIR)$(PREFIX)$(libdir)/bemenu"
|
|
|
|
install-base: install-pkgconfig install-include install-lib-symlinks install-bins install-man
|
|
|
|
install: install-base install-renderers
|
|
@echo "Install OK!"
|
|
|
|
doxygen:
|
|
BM_VERSION=$(VERSION) doxygen doxygen/Doxyfile
|
|
cp -R doxygen/doxygen-qmi-style/navtree html
|
|
cp -R doxygen/doxygen-qmi-style/search html/search
|
|
|
|
sign:
|
|
test "x$(GIT_TAG)" = "x$(VERSION)"
|
|
git archive --prefix="bemenu-$(VERSION)/" -o "bemenu-$(VERSION).tar.gz" "$(GIT_TAG)"
|
|
gpg --default-key "$(GPG_KEY_ID)" --armor --detach-sign "bemenu-$(VERSION).tar.gz"
|
|
|
|
clean:
|
|
$(RM) -r *.dSYM # OSX generates .dSYM dirs with -g ...
|
|
$(RM) $(pkgconfigs) $(libs) $(bins) $(renderers) $(mans) *.a *.so.*
|
|
$(RM) lib/renderers/wayland/wlr-*.h lib/renderers/wayland/wlr-*.c lib/renderers/wayland/xdg-shell.c
|
|
$(RM) -r html
|
|
|
|
.DELETE_ON_ERROR:
|
|
.PHONY: all clean install install-base install-pkgconfig install-include install-libs install-lib-symlinks \
|
|
install-man install-bins install-renderers install-curses install-wayland install-x11 \
|
|
doxygen sign clients curses x11 wayland
|