Files
graphene/Examples/pytorch/Makefile
Emil Hemdal f25510a259 [Examples] Support SGX_SIGNER_KEY in all Makefiles
The documentation currently specifies SGX_SIGNER_KEY as the parameter to
enable Graphene to find your keys.

Some examples don't use an environment parameter at all for the key to
sign the enclave, this commit fixes that.
2020-05-07 12:33:10 +02:00

83 lines
2.4 KiB
Makefile

# Build PyTorch as follows:
#
# - make -- create non-SGX no-debug-log manifest
# - make SGX=1 -- create SGX no-debug-log manifest
# - make SGX=1 DEBUG=1 -- create SGX debug-log manifest
#
# PyTorch and the pre-trained model must be installed on the system.
# See README for details.
#
# Use `make clean` to remove Graphene-generated files.
GRAPHENEDIR ?= ../..
SGX_SIGNER_KEY ?= $(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/enclave-key.pem
ifeq ($(DEBUG),1)
GRAPHENEDEBUG = inline
else
GRAPHENEDEBUG = none
endif
DISTRIB_ID ?= $(shell lsb_release --short --id)
DISTRIB_RELEASE ?= $(shell lsb_release --short --release)
ifeq ($(SGX), 1)
ifneq ($(DISTRIB_ID),Ubuntu)
$(error This example requires Ubuntu when building for SGX.)
endif
endif
UBUNTU_VERSION = $(DISTRIB_ID)$(DISTRIB_RELEASE)
.PHONY: default
ifeq ($(SGX),1)
default: pytorch.token python3.token pal_loader
else
default: pytorch.manifest python3.manifest pal_loader
endif
include ../../Scripts/Makefile.configs
pytorch.sig: python3.sig
# .manifest.template contains stanzas for both Ubuntu 16 and 18. The last rule selectively enables
# those lines based on the Ubuntu version detected.
%.manifest: %.manifest.template
sed -e 's|$$(GRAPHENEDIR)|'"$(GRAPHENEDIR)"'|g' \
-e 's|$$(GRAPHENEDEBUG)|'"$(GRAPHENEDEBUG)"'|g' \
-e 's|$$(HOME)|'"$(HOME)"'|g' \
-e 's|# '"$(UBUNTU_VERSION)"' ||g' \
-e 's|$$(ARCH_LIBDIR)|'"$(ARCH_LIBDIR)"'|g' \
$< > $@
pytorch.sig: pytorch.manifest
$(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/pal-sgx-sign \
-libpal $(GRAPHENEDIR)/Runtime/libpal-Linux-SGX.so \
-key $(SGX_SIGNER_KEY) \
-output pytorch.manifest.sgx -exec /usr/bin/python3 -manifest $<
%.token: %.sig
$(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/pal-sgx-get-token -output $@ -sig $<
# The PyTorch workload forks/execve()s at some point. This rule generates the required additional
# manifest for the child process.
python3.manifest: pytorch.manifest
cp $< $@
sed -i '/trusted_children/d' $@
python3.sig: python3.manifest
$(GRAPHENEDIR)/Pal/src/host/Linux-SGX/signer/pal-sgx-sign \
-libpal $(GRAPHENEDIR)/Runtime/libpal-Linux-SGX.so \
-key $(SGX_SIGNER_KEY) \
-output python3.manifest.sgx -exec /usr/bin/python3 -manifest $<
pal_loader:
ln -s $(GRAPHENEDIR)/Runtime/pal_loader $@
.PHONY: clean
clean:
$(RM) *.token *.sig *.manifest.sgx *.manifest pal_loader
.PHONY: distclean
distclean: clean