summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2020-06-18 14:52:35 +0200
committerJustus Winter <justus@sequoia-pgp.org>2020-06-18 15:58:36 +0200
commitc99514eba879b318c25e0736064a5412ecc8fd28 (patch)
tree22a63aa0b82548249bfa0124debb9da6e10ed69f
parent022521a0f24143eb124ba4e1ec2f98bea04d170c (diff)
Improve install target.
- Add explicit build-release and install targets. - Explicitly build the crates. - Move installation to the crate's Makefile. - This allows building of Sequoia's individual parts, e.g. by using 'make -Copenpgp-ffi install'.
-rw-r--r--Makefile25
-rw-r--r--ffi/Makefile6
-rw-r--r--openpgp-ffi/Makefile4
-rw-r--r--sqv/Makefile9
-rw-r--r--store/Makefile24
-rw-r--r--tool/Makefile32
6 files changed, 74 insertions, 26 deletions
diff --git a/Makefile b/Makefile
index 72877ce6..6f015703 100644
--- a/Makefile
+++ b/Makefile
@@ -85,40 +85,19 @@ doc:
# Installation.
.PHONY: build-release
build-release:
- CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) \
- $(CARGO) build $(CARGO_FLAGS) --release --all
$(MAKE) -Copenpgp-ffi build-release
$(MAKE) -Cffi build-release
+ $(MAKE) -Ctool build-release
$(MAKE) -Csqv build-release
$(MAKE) -Csop build-release
.PHONY: install
install: build-release
- $(INSTALL) -d $(DESTDIR)$(PREFIX)/lib/sequoia
- $(INSTALL) -t $(DESTDIR)$(PREFIX)/lib/sequoia \
- $(CARGO_TARGET_DIR)/release/sequoia-public-key-store
- $(INSTALL) -d $(DESTDIR)$(PREFIX)/bin
- $(INSTALL) -t $(DESTDIR)$(PREFIX)/bin \
- $(CARGO_TARGET_DIR)/release/sq
$(MAKE) -Copenpgp-ffi install
$(MAKE) -Cffi install
+ $(MAKE) -Ctool install
$(MAKE) -Csqv install
$(MAKE) -Csop install
- $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/zsh/site-functions
- $(INSTALL) -t $(DESTDIR)$(PREFIX)/share/zsh/site-functions \
- $(CARGO_TARGET_DIR)/_sq
- $(INSTALL) -t $(DESTDIR)$(PREFIX)/share/zsh/site-functions \
- $(CARGO_TARGET_DIR)/_sqv
- $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/bash-completion/completions
- $(INSTALL) $(CARGO_TARGET_DIR)/sq.bash \
- $(DESTDIR)$(PREFIX)/share/bash-completion/completions/sq
- $(INSTALL) $(CARGO_TARGET_DIR)/sqv.bash \
- $(DESTDIR)$(PREFIX)/share/bash-completion/completions/sqv
- $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/fish/completions
- $(INSTALL) -t $(DESTDIR)$(PREFIX)/share/fish/completions \
- $(CARGO_TARGET_DIR)/sq.fish
- $(INSTALL) -t $(DESTDIR)$(PREFIX)/share/fish/completions \
- $(CARGO_TARGET_DIR)/sqv.fish
# Infrastructure for creating source distributions.
.PHONY: dist
diff --git a/ffi/Makefile b/ffi/Makefile
index f35c2238..3dddfcd4 100644
--- a/ffi/Makefile
+++ b/ffi/Makefile
@@ -58,11 +58,14 @@ examples:
# Installation.
.PHONY: build-release
build-release:
+ CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) \
+ $(CARGO) build $(CARGO_FLAGS) --release --package sequoia-ffi
$(MAKE) -Clang/python build-release
$(call sequoia_pc,$(CARGO_TARGET_DIR)/release,true)
+ $(MAKE) -C../store install
.PHONY: install
-install:
+install: build-release
$(INSTALL) -d $(DESTDIR)$(PREFIX)/share/pkgconfig
$(call sequoia_pc,$(DESTDIR)$(PREFIX)/share/pkgconfig,)
$(INSTALL) -d $(DESTDIR)$(PREFIX)/include
@@ -79,6 +82,7 @@ install:
$(DESTDIR)$(PREFIX)/lib/libsequoia_ffi.$(_SEQ_LIB_EXT)
$(INSTALL) $(CARGO_TARGET_DIR)/release/libsequoia_ffi.a \
$(DESTDIR)$(PREFIX)/lib/libsequoia_ffi.a
+ $(MAKE) -C../store install
# Now the bindings.
$(MAKE) -Clang/python install
diff --git a/openpgp-ffi/Makefile b/openpgp-ffi/Makefile
index 49511468..b6a378fa 100644
--- a/openpgp-ffi/Makefile
+++ b/openpgp-ffi/Makefile
@@ -71,10 +71,12 @@ examples:
# Installation.
.PHONY: build-release
build-release:
+ CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) \
+ $(CARGO) build $(CARGO_FLAGS) --release --package sequoia-openpgp-ffi
$(call sequoia_openpgp_pc,$(CARGO_TARGET_DIR)/release,true)
.PHONY: install
-install:
+install: build-release
$(INSTALL) -d $(DESTDIR)$(PREFIX)/share/pkgconfig
$(call sequoia_openpgp_pc,$(DESTDIR)$(PREFIX)/share/pkgconfig,)
$(INSTALL) -d $(DESTDIR)$(PREFIX)/include
diff --git a/sqv/Makefile b/sqv/Makefile
index 4f3d9524..7d07b106 100644
--- a/sqv/Makefile
+++ b/sqv/Makefile
@@ -24,6 +24,15 @@ build-release:
install: build-release
$(INSTALL) -d $(DESTDIR)$(PREFIX)/bin
$(INSTALL) -t $(DESTDIR)$(PREFIX)/bin $(CARGO_TARGET_DIR)/release/sqv
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/zsh/site-functions
+ $(INSTALL) -t $(DESTDIR)$(PREFIX)/share/zsh/site-functions \
+ $(CARGO_TARGET_DIR)/_sqv
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/bash-completion/completions
+ $(INSTALL) $(CARGO_TARGET_DIR)/sqv.bash \
+ $(DESTDIR)$(PREFIX)/share/bash-completion/completions/sqv
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/fish/completions
+ $(INSTALL) -t $(DESTDIR)$(PREFIX)/share/fish/completions \
+ $(CARGO_TARGET_DIR)/sqv.fish
# Maintenance.
.PHONY: update-usage
diff --git a/store/Makefile b/store/Makefile
new file mode 100644
index 00000000..2b907289
--- /dev/null
+++ b/store/Makefile
@@ -0,0 +1,24 @@
+# Configuration.
+CARGO_TARGET_DIR ?= $(shell pwd)/../target
+# We currently only support absolute paths.
+CARGO_TARGET_DIR := $(abspath $(CARGO_TARGET_DIR))
+
+# Tools.
+CARGO ?= cargo
+ifeq ($(shell uname -s), Darwin)
+ INSTALL ?= ginstall
+else
+ INSTALL ?= install
+endif
+
+# Installation.
+.PHONY: build-release
+build-release:
+ CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) \
+ $(CARGO) build $(CARGO_FLAGS) --release --package sequoia-store
+
+.PHONY: install
+install: build-release
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/lib/sequoia
+ $(INSTALL) -t $(DESTDIR)$(PREFIX)/lib/sequoia \
+ $(CARGO_TARGET_DIR)/release/sequoia-public-key-store
diff --git a/tool/Makefile b/tool/Makefile
index 196a4cfb..78177449 100644
--- a/tool/Makefile
+++ b/tool/Makefile
@@ -1,11 +1,41 @@
-CARGO ?= cargo
+# Configuration.
CARGO_TARGET_DIR ?= $(shell pwd)/../target
# We currently only support absolute paths.
CARGO_TARGET_DIR := $(abspath $(CARGO_TARGET_DIR))
SQ ?= $(CARGO_TARGET_DIR)/debug/sq
+# Tools.
+CARGO ?= cargo
+ifeq ($(shell uname -s), Darwin)
+ INSTALL ?= ginstall
+else
+ INSTALL ?= install
+endif
+
all: src/sq-usage.rs
+# Installation.
+.PHONY: build-release
+build-release:
+ CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) \
+ $(CARGO) build $(CARGO_FLAGS) --release --package sequoia-tool
+ $(MAKE) -C../store build-release
+
+.PHONY: install
+install: build-release
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/bin
+ $(INSTALL) -t $(DESTDIR)$(PREFIX)/bin $(CARGO_TARGET_DIR)/release/sq
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/zsh/site-functions
+ $(INSTALL) -t $(DESTDIR)$(PREFIX)/share/zsh/site-functions \
+ $(CARGO_TARGET_DIR)/_sq
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/bash-completion/completions
+ $(INSTALL) $(CARGO_TARGET_DIR)/sq.bash \
+ $(DESTDIR)$(PREFIX)/share/bash-completion/completions/sq
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/fish/completions
+ $(INSTALL) -t $(DESTDIR)$(PREFIX)/share/fish/completions \
+ $(CARGO_TARGET_DIR)/sq.fish
+ $(MAKE) -C../store install
+
# Maintenance.
.PHONY: update-usage
update-usage: src/sq-usage.rs