Embedd assets icons
This commit is contained in:
26
Makefile
26
Makefile
@@ -6,6 +6,7 @@ CXX ?= g++
|
||||
CXXFLAGS ?= -std=c++17 -O2 -Wall -Wextra -Wpedantic
|
||||
PKG_CONFIG ?= pkg-config
|
||||
MSGFMT ?= msgfmt
|
||||
GLIB_COMPILE_RESOURCES ?= glib-compile-resources
|
||||
|
||||
GTK_CFLAGS := $(shell $(PKG_CONFIG) --cflags gtk4)
|
||||
GTK_LIBS := $(shell $(PKG_CONFIG) --libs gtk4)
|
||||
@@ -13,6 +14,8 @@ USB_CFLAGS := $(shell $(PKG_CONFIG) --cflags libusb-1.0)
|
||||
USB_LIBS := $(shell $(PKG_CONFIG) --libs libusb-1.0)
|
||||
XKB_CFLAGS := $(shell $(PKG_CONFIG) --cflags xkbcommon)
|
||||
XKB_LIBS := $(shell $(PKG_CONFIG) --libs xkbcommon)
|
||||
GIO_CFLAGS := $(shell $(PKG_CONFIG) --cflags gio-2.0)
|
||||
GIO_LIBS := $(shell $(PKG_CONFIG) --libs gio-2.0)
|
||||
|
||||
PACKAGE := gkeymapper
|
||||
TARGET := gkeymapper
|
||||
@@ -24,6 +27,9 @@ GUI_SOURCES := $(wildcard $(SRC_DIR)/*.cpp) $(wildcard $(SHARED_DIR)/*.cpp)
|
||||
GUI_HEADERS := $(wildcard $(SRC_DIR)/*.h) $(wildcard $(SHARED_DIR)/*.h)
|
||||
DAEMON_SOURCES := $(wildcard $(DAEMON_DIR)/*.cpp) $(wildcard $(SHARED_DIR)/*.cpp)
|
||||
DAEMON_HEADERS := $(wildcard $(DAEMON_DIR)/*.h) $(wildcard $(SHARED_DIR)/*.h)
|
||||
# Icons embedded into the GUI (generated from data/icons.gresource.xml).
|
||||
GUI_RES := build/gresources.c
|
||||
GUI_RES_SRC := data/icons.gresource.xml
|
||||
PREFIX ?= /usr/local
|
||||
BINDIR := $(PREFIX)/bin
|
||||
LOCALEDIR := $(PREFIX)/share/locale
|
||||
@@ -31,6 +37,7 @@ ASSETS_DIR := $(PREFIX)/share/$(PACKAGE)/assets
|
||||
UDEV_DIR := $(PREFIX)/lib/udev/rules.d
|
||||
MODULES_DIR := $(PREFIX)/lib/modules-load.d
|
||||
UNIT_DIR := $(PREFIX)/lib/systemd/user
|
||||
DBUS_DIR := $(PREFIX)/share/dbus-1/services
|
||||
|
||||
CXXFLAGS += -DPACKAGE=\"$(PACKAGE)\" -DLOCALEDIR=\"$(LOCALEDIR)\" -DASSETS_DIR=\"$(ASSETS_DIR)\"
|
||||
CXXFLAGS += -I$(SHARED_DIR)
|
||||
@@ -44,13 +51,20 @@ MO_FILES := $(patsubst %,locale/%/LC_MESSAGES/$(PACKAGE).mo,$(LANGS))
|
||||
|
||||
all: $(TARGET) translations $(DAEMON)
|
||||
|
||||
$(TARGET): $(GUI_SOURCES) $(GUI_HEADERS)
|
||||
$(CXX) $(CXXFLAGS) $(GTK_CFLAGS) $(XKB_CFLAGS) -o $@ $(GUI_SOURCES) $(GTK_LIBS) $(XKB_LIBS)
|
||||
# Embedded GUI icons. --c-name keeps the gkeymapper_* symbols stable; --sourcedir
|
||||
# is the repository root because the XML refers to the assets by their real path.
|
||||
$(GUI_RES): $(GUI_RES_SRC) assets/icon.png assets/icon.svg
|
||||
@mkdir -p $(@D)
|
||||
$(GLIB_COMPILE_RESOURCES) --generate-source --target=$@ --sourcedir=. \
|
||||
--c-name $(PACKAGE) $(GUI_RES_SRC)
|
||||
|
||||
$(TARGET): $(GUI_SOURCES) $(GUI_HEADERS) $(GUI_RES)
|
||||
$(CXX) $(CXXFLAGS) $(GTK_CFLAGS) $(XKB_CFLAGS) -o $@ $(GUI_SOURCES) $(GUI_RES) $(GTK_LIBS) $(XKB_LIBS)
|
||||
|
||||
daemon: $(DAEMON)
|
||||
|
||||
$(DAEMON): $(DAEMON_SOURCES) $(DAEMON_HEADERS)
|
||||
$(CXX) $(CXXFLAGS) $(USB_CFLAGS) $(XKB_CFLAGS) -o $@ $(DAEMON_SOURCES) $(USB_LIBS) $(XKB_LIBS)
|
||||
$(CXX) $(CXXFLAGS) $(USB_CFLAGS) $(XKB_CFLAGS) $(GIO_CFLAGS) -o $@ $(DAEMON_SOURCES) $(USB_LIBS) $(XKB_LIBS) $(GIO_LIBS)
|
||||
|
||||
translations: $(MO_FILES)
|
||||
|
||||
@@ -63,7 +77,7 @@ run: $(TARGET) translations
|
||||
|
||||
clean:
|
||||
rm -f $(TARGET) $(DAEMON)
|
||||
rm -rf locale
|
||||
rm -rf locale build
|
||||
|
||||
install: $(TARGET) $(DAEMON) translations
|
||||
install -d $(DESTDIR)$(BINDIR)
|
||||
@@ -94,6 +108,10 @@ install: $(TARGET) $(DAEMON) translations
|
||||
install -d $(DESTDIR)$(UNIT_DIR)
|
||||
sed 's|@BINDIR@|$(BINDIR)|g' data/$(DAEMON).service > $(DESTDIR)$(UNIT_DIR)/$(DAEMON).service
|
||||
chmod 644 $(DESTDIR)$(UNIT_DIR)/$(DAEMON).service
|
||||
# D-Bus activation: the first GUI call can start the daemon on demand.
|
||||
install -d $(DESTDIR)$(DBUS_DIR)
|
||||
sed 's|@BINDIR@|$(BINDIR)|g' data/dev.rager.gkeymapper.Daemon.service > $(DESTDIR)$(DBUS_DIR)/dev.rager.gkeymapper.Daemon.service
|
||||
chmod 644 $(DESTDIR)$(DBUS_DIR)/dev.rager.gkeymapper.Daemon.service
|
||||
-command -v udevadm >/dev/null && udevadm control --reload-rules 2>/dev/null || true
|
||||
-systemctl --user daemon-reload 2>/dev/null || true
|
||||
@echo
|
||||
|
||||
Reference in New Issue
Block a user