Makefile.Test 1.5 KB

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