66 lines
2.4 KiB
Makefile
66 lines
2.4 KiB
Makefile
# gKeyMapper - Build
|
|
# Dependencies: g++, pkg-config, msgfmt, libgtk-4-dev
|
|
# Installation: sudo apt install build-essential gettext libgtk-4-dev
|
|
|
|
CXX ?= g++
|
|
CXXFLAGS ?= -std=c++17 -O2 -Wall -Wextra -Wpedantic
|
|
PKG_CONFIG ?= pkg-config
|
|
MSGFMT ?= msgfmt
|
|
|
|
GTK_CFLAGS := $(shell $(PKG_CONFIG) --cflags gtk4)
|
|
GTK_LIBS := $(shell $(PKG_CONFIG) --libs gtk4)
|
|
|
|
PACKAGE := gkeymapper
|
|
TARGET := gkeymapper
|
|
SRC_DIR := src
|
|
SOURCES := $(wildcard $(SRC_DIR)/*.cpp)
|
|
HEADERS := $(wildcard $(SRC_DIR)/*.h)
|
|
PREFIX ?= /usr/local
|
|
LOCALEDIR := $(PREFIX)/share/locale
|
|
ASSETS_DIR := $(PREFIX)/share/$(PACKAGE)/assets
|
|
|
|
CXXFLAGS += -DPACKAGE=\"$(PACKAGE)\" -DLOCALEDIR=\"$(LOCALEDIR)\" -DASSETS_DIR=\"$(ASSETS_DIR)\"
|
|
|
|
# Translations
|
|
PO_FILES := $(wildcard po/*.po)
|
|
LANGS := $(patsubst po/%.po,%,$(PO_FILES))
|
|
MO_FILES := $(patsubst %,locale/%/LC_MESSAGES/$(PACKAGE).mo,$(LANGS))
|
|
|
|
.PHONY: all clean run install translations
|
|
|
|
all: $(TARGET) translations
|
|
|
|
$(TARGET): $(SOURCES) $(HEADERS)
|
|
$(CXX) $(CXXFLAGS) $(GTK_CFLAGS) -o $@ $(SOURCES) $(GTK_LIBS)
|
|
|
|
translations: $(MO_FILES)
|
|
|
|
locale/%/LC_MESSAGES/$(PACKAGE).mo: po/%.po
|
|
@mkdir -p $(@D)
|
|
$(MSGFMT) -o $@ $<
|
|
|
|
run: $(TARGET) translations
|
|
GKEYMAPPER_LOCALEDIR=$(CURDIR)/locale GKEYMAPPER_ASSETS_DIR=$(CURDIR)/assets ./$(TARGET)
|
|
|
|
clean:
|
|
rm -f $(TARGET)
|
|
rm -rf locale
|
|
|
|
install: $(TARGET) translations
|
|
install -d $(DESTDIR)$(PREFIX)/bin
|
|
install -m 755 $(TARGET) $(DESTDIR)$(PREFIX)/bin/$(TARGET)
|
|
install -d $(DESTDIR)$(ASSETS_DIR)
|
|
install -m 644 assets/* $(DESTDIR)$(ASSETS_DIR)/
|
|
install -d $(DESTDIR)$(PREFIX)/share/icons/hicolor/256x256/apps
|
|
install -m 644 assets/icon.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/256x256/apps/$(PACKAGE).png
|
|
install -d $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps
|
|
install -m 644 assets/icon.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/$(PACKAGE).svg
|
|
-command -v gtk-update-icon-cache >/dev/null && gtk-update-icon-cache -q -t $(DESTDIR)$(PREFIX)/share/icons/hicolor 2>/dev/null || true
|
|
install -d $(DESTDIR)$(PREFIX)/share/applications
|
|
install -m 644 data/gkeymapper.desktop $(DESTDIR)$(PREFIX)/share/applications/$(PACKAGE).desktop
|
|
-command -v update-desktop-database >/dev/null && update-desktop-database $(DESTDIR)$(PREFIX)/share/applications 2>/dev/null || true
|
|
for lang in $(LANGS); do \
|
|
install -d $(DESTDIR)$(LOCALEDIR)/$$lang/LC_MESSAGES; \
|
|
install -m 644 locale/$$lang/LC_MESSAGES/$(PACKAGE).mo \
|
|
$(DESTDIR)$(LOCALEDIR)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \
|
|
done
|