blob: bbf493293415ae7a24739cefcf98d871d28026ee (
plain)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# Makefile for Sequoia's bindings.
# Configuration.
PREFIX ?= /usr/local
DESTDIR ?=
CARGO ?= cargo
CARGO_TARGET_DIR ?= $(shell pwd)/../target
# We currently only support absolute paths.
CARGO_TARGET_DIR := $(abspath $(CARGO_TARGET_DIR))
VERSION ?= $(shell grep '^version[[:space:]]*=[[:space:]]*' Cargo.toml | cut -d'"' -f2)
VERSION_MAJOR = $(shell echo $(VERSION) | cut -d'.' -f1)
# Build the right library
ifeq ($(shell uname -s), Darwin)
_SEQ_LIB_EXT = dylib
else
_SEQ_LIB_EXT = so
endif
# Tools.
ifeq ($(shell uname -s), Darwin)
INSTALL ?= ginstall
else
INSTALL ?= install
endif
# Make sure subprocesses pick these up.
export PREFIX
export DESTDIR
# $(1) = install dir
# $(2) = whether to set libdir to $(1) (empty string = false)
sequoia_openpgp_pc = \
sed -e 's|VERSION|$(VERSION)|g' \
-e 's|PREFIX|$(shell pwd)|g' \
$(if $(2),-e 's|libdir=.*|libdir=$(1)|g') \
sequoia-openpgp.pc.in \
> $(1)/sequoia-openpgp.pc
all: build
.PHONY: build
build:
$(call sequoia_openpgp_pc,$(CARGO_TARGET_DIR)/debug,true)
.PHONY: force-build
force-build:
cd .. ; cargo build -p sequoia-openpgp-ffi
# Testing and examples.
.PHONY: test check
test check: check-headers
# Header files.
.PHONY: check-headers
check-headers: force-build
nm -g --defined-only \
$(CARGO_TARGET_DIR)/debug/libsequoia_openpgp_ffi.$(_SEQ_LIB_EXT) \
| cut -d' ' -f3 | sort -u | grep pgp_ \
| while read SYM ; \
do git grep -q "$$SYM" include || echo $$SYM ; \
done | tee $(CARGO_TARGET_DIR)/debug/.check-headers ; \
! test -s $(CARGO_TARGET_DIR)/debug/.check-headers
.PHONY: examples
examples:
$(MAKE) -Cexamples
# Installation.
.PHONY: build-release
build-release:
$(call sequoia_openpgp_pc,$(CARGO_TARGET_DIR)/release,true)
.PHONY: install
install:
$(INSTALL) -d $(DESTDIR)$(PREFIX)/share/pkgconfig
$(call sequoia_openpgp_pc,$(DESTDIR)$(PREFIX)/share/pkgconfig,)
$(INSTALL) -d $(DESTDIR)$(PREFIX)/include
$(INSTALL) -d $(DESTDIR)$(PREFIX)/include/sequoia
$(INSTALL) -t $(DESTDIR)$(PREFIX)/include/sequoia \
include/sequoia/*.h
$(INSTALL) -d $(DESTDIR)$(PREFIX)/lib
$(INSTALL) $(CARGO_TARGET_DIR)/release/libsequoia_openpgp_ffi.$(_SEQ_LIB_EXT) \
$(DESTDIR)$(PREFIX)/lib/libsequoia_openpgp_ffi.$(_SEQ_LIB_EXT).$(VERSION)
ln -fs libsequoia_openpgp_ffi.$(_SEQ_LIB_EXT).$(VERSION) \
$(DESTDIR)$(PREFIX)/lib/libsequoia_openpgp_ffi.$(_SEQ_LIB_EXT).$(VERSION_MAJOR)
ln -fs libsequoia_openpgp_ffi.$(_SEQ_LIB_EXT).$(VERSION) \
$(DESTDIR)$(PREFIX)/lib/libsequoia_openpgp_ffi.$(_SEQ_LIB_EXT)
$(INSTALL) $(CARGO_TARGET_DIR)/release/libsequoia_openpgp_ffi.a \
$(DESTDIR)$(PREFIX)/lib/libsequoia_openpgp_ffi.a
# Housekeeping.
.PHONY: clean
clean:
$(MAKE) -Cexamples clean
|