Makefile.Test 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. SGX_DIR = $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
  2. LIBPAL = $(SGX_DIR)/../../libpal-enclave.so
  3. SGX_SIGNER_KEY = $(SGX_DIR)/signer/enclave-key.pem
  4. SGX_SIGN = $(SGX_DIR)/signer/pal-sgx-sign -libpal $(LIBPAL) -key $(SGX_SIGNER_KEY)
  5. SGX_GET_TOKEN = $(SGX_DIR)/signer/pal-sgx-get-token
  6. ifeq ($(SGX_RUN),1)
  7. expand_target = $(foreach t,$(filter-out manifest,$(1)),$(patsubst %.manifest,%,$(t)).token)
  8. %.token: %.sig
  9. @echo [ Token: $(patsubst %.token,%,$@) ]
  10. @$(SGX_GET_TOKEN) -output $@ -sig $(patsubst %.token,%.sig,$@)
  11. else
  12. expand_target = $(1) $(foreach t,$(filter-out manifest,$(1)), \
  13. $(patsubst %.manifest,%,$(t)).manifest.sgx) *.sig *.token
  14. $(SGX_SIGNER_KEY):
  15. $(error "Cannot find any enclave key. Generate $(abspath $(SGX_SIGNER_KEY)) or specify 'SGX_SIGNER_KEY=' with make")
  16. prerequisite = \
  17. for f in `grep -Po 'sgx.trusted_children.[^\\s=]+\\s*=\\s*file:\\K\\S+' $(1)`; do \
  18. $(MAKE) $${f%.sig}.manifest.sgx; \
  19. done
  20. find_manifest = $(patsubst %.template,%,$(if $(wildcard $(1).manifest.template),$(1).manifest.template,manifest.template))
  21. %.manifest.sgx: % $(LIBPAL) $(SGX_SIGNER_KEY)
  22. $(eval $@-manifest := $(call find_manifest,$<))
  23. @$(MAKE) $($@-manifest)
  24. $(call prerequisite,$($@-manifest))
  25. @echo [ $@ ]
  26. $(SGX_SIGN) -output $@ -exec $< -manifest $($@-manifest)
  27. %.manifest.sgx: %.manifest $(LIBPAL) $(SGX_SIGNER_KEY)
  28. $(call prerequisite,$<)
  29. @$(MAKE) $<
  30. @echo [ $@ ]
  31. $(SGX_SIGN) -output $@ -manifest $<
  32. *.sig *.token nothing:
  33. endif