File: GNUmakefile

package info (click to toggle)
snappy-tools 1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 168 kB
  • sloc: cpp: 442; sh: 217; makefile: 14
file content (52 lines) | stat: -rw-r--r-- 2,052 bytes parent folder | download
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