File: Makefile

package info (click to toggle)
archivemount 1b-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 232 kB
  • sloc: cpp: 1,873; makefile: 41; sh: 21
file content (38 lines) | stat: -rw-r--r-- 1,644 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
# SPDX-License-Identifier: 0BSD


CC ?= cc
CXX ?= c++
PKG_CONFIG ?= pkg-config
FUSES ?= fuse3 fuse
VERSION ?= $(shell git describe)
DATE_EPOCH = LC_ALL=C 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 "archivemount.1.in")
MANUAL_DATE ?= $(shell $(DATE_EPOCH)$(SOURCE_DATE_EPOCH) +"%B %e, %Y")
PREFIX ?= /usr/local


ADD_L    := $(shell $(PKG_CONFIG) --cflags libarchive 2>/dev/null)                 $(shell for p in $(FUSES); do $(PKG_CONFIG) --cflags $$p && exit; done 2>/dev/null) -O3 -g -Wall -Wextra

CPPFLAGS += -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -DVERSION='"$(VERSION)"' $(if $(DEBUG),,-DNDEBUG)
CFLAGS   += $(ADD_L)
CXXFLAGS += $(ADD_L) -fno-exceptions -fno-rtti -Wno-missing-field-initializers -std=c++2b  # c++23 isn't understood by everyone
LDLIBS   += $(shell $(PKG_CONFIG) --libs libarchive 2>/dev/null || echo -larchive) $(shell for p in $(FUSES); do $(PKG_CONFIG) --libs $$p && exit; done 2>/dev/null; echo -l$(firstword $(FUSES)))


.PHONY: all check clean install

all: archivemount archivemount.1
clean:
	rm -rf archivemount archivemount.1
check: archivemount
	./test


install: all
	mkdir -p $(DESTDIR)$(PREFIX)/bin $(DESTDIR)$(PREFIX)/share/man/man1
	cp archivemount $(DESTDIR)$(PREFIX)/bin
	cp archivemount.1 $(DESTDIR)$(PREFIX)/share/man/man1

archivemount.1: archivemount.1.in
	awk '{ gsub(/ \^/, " \\(ha"); gsub(/ ~/, " \\(ti"); if($$1 == ".Dd") $$2 = "$(MANUAL_DATE)"; if($$1 == ".Dt") print ".ds doc-volume-operating-system"; if($$1 == ".Os") $$2 = "archivemount-ng $(VERSION)"; print}' < $< > $@