forked from confidential-containers/trustee
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
136 lines (108 loc) · 3.88 KB
/
Copy pathMakefile
File metadata and controls
136 lines (108 loc) · 3.88 KB
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
AS_TYPE ?= coco-as
ALIYUN ?= false
NEBULA_CA_PLUGIN ?= false
VAULT ?= true
EXTERNAL_PLUGIN ?= false
BUILD_ARCH := $(shell uname -m)
ARCH ?= $(shell uname -m)
# Check if ARCH is supported, otehrwise return error
ifeq ($(filter $(ARCH),x86_64 s390x aarch64 arm64),)
$(error "Unsupported architecture: $(ARCH)")
endif
RELEASE_DIR := ../target/release
TARGET_FLAG :=
CARGO_ENV :=
ifneq ($(BUILD_ARCH), $(ARCH))
ifneq (,$(wildcard /etc/debian_version))
GCC_PACKAGE := gcc-$(ARCH)-linux-gnu
GCC_COMPILER := $(ARCH)-linux-gnu-gcc
RUSTC_TARGET := $(ARCH)-unknown-linux-gnu
GCC_INSTALL := $(shell sudo apt-get install -y ${GCC_PACKAGE})
RUST_INSTALL := $(shell rustup target add ${RUSTC_TARGET})
RUSTFLAGS_ARGS := -C linker=$(GCC_COMPILER)
TARGET_FLAG := --target $(RUSTC_TARGET)
RELEASE_DIR := ../target/$(RUSTC_TARGET)/release
OS_ARCH := $(ARCH)
OS_ARCH := $(OS_ARCH:x86_64=amd64)
OS_ARCH := $(OS_ARCH:aarch64=arm64)
CARGO_ENV := OPENSSL_INCLUDE_DIR=/usr/include/$(ARCH)-linux-gnu OPENSSL_LIB_DIR=/usr/lib/$(ARCH)-linux-gnu RUSTFLAGS="$(RUSTFLAGS_ARGS)"
else
$(error ERROR: Cross-compiling is only tested on Debian-like OSes)
endif
endif
CLI_FEATURES ?=
ATTESTER ?=
FEATURES ?=
TEST_FEATURES ?=
TEST_ARGUMENTS ?=
COCO_AS_INTEGRATION_TYPE ?= builtin
INSTALL_DESTDIR ?= /usr/local/bin
ifeq ($(AS_TYPE), coco-as)
AS_FEATURE := $(AS_TYPE)-$(COCO_AS_INTEGRATION_TYPE)
else ifneq ($(AS_TYPE), )
AS_FEATURE := $(AS_TYPE)
endif
ifeq ($(ALIYUN), true)
override FEATURES := $(FEATURES),aliyun
endif
ifeq ($(NEBULA_CA_PLUGIN), true)
override FEATURES := $(FEATURES),nebula-ca-plugin
endif
ifeq ($(VAULT), true)
override FEATURES := $(FEATURES),vault
endif
ifeq ($(EXTERNAL_PLUGIN), true)
override FEATURES := $(FEATURES),external-plugin
endif
ifeq ($(CLI_FEATURES),sample_only)
RUST_CLI_FEATURES = "," # this is a dummy feature to satisfy the cargo build command
else ifdef ATTESTER
RUST_CLI_FEATURES = "$(ATTESTER)"
else
RUST_CLI_FEATURES = "all-attesters"
endif
ifneq ($(TEST_FEATURES),)
TEST_ARGUMENTS = --features $(TEST_FEATURES)
endif
build: background-check-kbs
.PHONY: background-check-kbs
background-check-kbs:
$(CARGO_ENV) cargo build -p kbs --locked --release --no-default-features --features $(AS_FEATURE),$(FEATURES) $(TARGET_FLAG)
.PHONY: passport-issuer-kbs
passport-issuer-kbs:
$(CARGO_ENV) cargo build -p kbs --locked --release --no-default-features --features $(AS_FEATURE),$(FEATURES) $(TARGET_FLAG)
mv ../target/release/kbs ../target/release/issuer-kbs
.PHONY: passport-resource-kbs
passport-resource-kbs:
$(CARGO_ENV) cargo build -p kbs --locked --release --no-default-features --features $(FEATURES), $(TARGET_FLAG)
mv ../target/release/kbs ../target/release/resource-kbs
.PHONY: cli
cli:
$(CARGO_ENV) cargo build -p kbs-client --locked --release --features $(RUST_CLI_FEATURES) $(TARGET_FLAG)
.PHONY: cli-static-linux
cli-static-linux:
$(CARGO_ENV) cargo build \
-p kbs-client \
--target=$(ARCH)-unknown-linux-gnu \
--config "target.$(ARCH)-unknown-linux-gnu.rustflags = '-C target-feature=+crt-static'" \
--locked \
--release
install-kbs:
install -D -m0755 $(RELEASE_DIR)/kbs $(INSTALL_DESTDIR)
install-issuer-kbs:
install -D -m0755 $(RELEASE_DIR)/issuer-kbs $(INSTALL_DESTDIR)
install -D -m0755 $(RELEASE_DIR)/kbs-client $(INSTALL_DESTDIR)
install-resource-kbs:
install -D -m0755 $(RELEASE_DIR)/resource-kbs $(INSTALL_DESTDIR)
install-cli:
install -D -m0755 $(RELEASE_DIR)/kbs-client $(INSTALL_DESTDIR)
uninstall:
rm -rf $(INSTALL_DESTDIR)/kbs $(INSTALL_DESTDIR)/kbs-client $(INSTALL_DESTDIR)/issuer-kbs $(INSTALL_DESTDIR)/resource-kbs
check:
cargo test -p kbs -p kbs-client -p integration-tests $(TEST_ARGUMENTS) -- --nocapture
lint:
cargo clippy -p kbs -p kbs-client $(TEST_ARGUMENTS) -- -D warnings
format:
cargo fmt -p kbs -p kbs-client -- --check --config format_code_in_doc_comments=true
clean:
cargo clean