1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
# SPDX-License-Identifier: 0BSD
CXX ?= c++
LOCALLOC ?=
NOLOCREGEN ?=
PKG_CONFIG ?= pkg-config
VERSION ?= $(shell git describe)
DATE_EPOCH = date $(shell date -d @0 > /dev/null 2>&1 && echo "-d @" || echo "-r ")
SOURCE_DATE_EPOCH ?= $(shell git log -1 --no-show-signature --format=%at "snappy.1")
MANUAL_DATE ?= $(shell $(DATE_EPOCH)$(SOURCE_DATE_EPOCH) +"%B %e, %Y")
PREFIX ?= /usr/local
CXXFLAGS += $(shell $(PKG_CONFIG) --cflags snappy 2>/dev/null) -pthread -O3 -g -Wall -Wextra -fno-exceptions -fno-rtti -std=c++20
LDLIBS += $(shell $(PKG_CONFIG) --libs snappy 2>/dev/null || echo -lsnappy)
CPPFLAGS += -D_FILE_OFFSET_BITS=64 -DTEXTDOMAIN_DIRNAME='"$(if $(LOCALLOC),loc,$(PREFIX)/share/locale)"'
ifneq (,$(shell command -v msgfmt))
LOCALES := $(wildcard *.po)
endif
.PHONY: all check clean install
all: snappy $(patsubst %.po,loc/%/LC_MESSAGES/snappy-tools.mo,$(LOCALES))
check: snappy
ifneq (,$(shell command -v groff))
! sed 's/^\.Dd/& $(MANUAL_DATE)/' snappy.1 | groff -K utf8 -te -mdoc 2>&1 > /dev/null | grep .
endif
./test
clean:
rm -rf snappy loc/
loc/snappy-tools.pot: snappy.cpp
@mkdir -p $(@D)
$(NOLOCREGEN)xgettext --from-code=UTF-8 -c -io- $^ | sed -n '/^#[:.]/,$$p' > $@
$(NOLOCREGEN)$(foreach l,$(LOCALES),msgmerge --backup=off --no-wrap -Uiq $(l) $@ &&) :
@>> loc/snappy-tools.pot
loc/%/LC_MESSAGES/snappy-tools.mo : %.po loc/snappy-tools.pot
@mkdir -p $(@D)
msgfmt --statistics --check-format --check-domain -o $@ $<
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin $(DESTDIR)$(PREFIX)/share/man/man1 $(DESTDIR)$(PREFIX)/share/locale
cp -P snappy unsnappy $(DESTDIR)$(PREFIX)/bin
awk '/^.Dd/ { $$2 = "$(MANUAL_DATE)" } /^.Dt/ { print ".ds doc-volume-operating-system" } /^.Os/ { $$2 = "snappy-tools $(VERSION)" } { gsub(/ \^/, " \\(ha"); gsub(/ ~/, " \\(ti"); print }' < snappy.1 | gzip -9 > $(DESTDIR)$(PREFIX)/share/man/man1/snappy.1.gz
ln -sf snappy.1.gz $(DESTDIR)$(PREFIX)/share/man/man1/unsnappy.1.gz
ifneq (,$(LOCALES))
cp -r $(patsubst %.po,loc/%,$(LOCALES)) $(DESTDIR)$(PREFIX)/share/locale
endif
|