1# Add any common flags to the module 2include make/common_flags.mk 3 4# Install libclang_rt into the SDK 5LIBCLANG_RT := $(notdir $(TRUSTY_APP_LIBGCC)) 6ALL_SDK_LIBS += $(TRUSTY_SDK_LIB_DIR)/$(LIBCLANG_RT) 7$(TRUSTY_SDK_LIB_DIR)/$(LIBCLANG_RT): $(TRUSTY_APP_LIBGCC) 8 @$(MKDIR) 9 $(NOECHO)cp $^ $@ 10 11# Install SDK make helper 12ALL_SDK_EXTRA_FILES += $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk 13$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: SDK_CFLAGS := \ 14 $(GLOBAL_SHARED_OPTFLAGS) $(GLOBAL_USER_OPTFLAGS) $(MODULE_OPTFLAGS) \ 15 $(GLOBAL_SHARED_COMPILEFLAGS) $(GLOBAL_USER_COMPILEFLAGS) $(ARCH_$(ARCH)_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) \ 16 $(GLOBAL_SHARED_CFLAGS) $(GLOBAL_USER_CFLAGS) $(ARCH_$(ARCH)_CFLAGS) $(MODULE_CFLAGS) 17$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: SDK_CXXFLAGS := \ 18 $(GLOBAL_SHARED_OPTFLAGS) $(GLOBAL_USER_OPTFLAGS) $(MODULE_OPTFLAGS) \ 19 $(GLOBAL_SHARED_COMPILEFLAGS) $(GLOBAL_USER_COMPILEFLAGS) $(ARCH_$(ARCH)_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) \ 20 $(GLOBAL_SHARED_CPPFLAGS) $(GLOBAL_USER_CPPFLAGS) $(ARCH_$(ARCH)_CPPFLAGS) $(MODULE_CPPFLAGS) 21$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: SDK_ASMFLAGS := \ 22 $(GLOBAL_SHARED_OPTFLAGS) $(GLOBAL_USER_OPTFLAGS) $(MODULE_OPTFLAGS) \ 23 $(GLOBAL_SHARED_COMPILEFLAGS) $(GLOBAL_USER_COMPILEFLAGS) $(ARCH_$(ARCH)_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) \ 24 $(GLOBAL_SHARED_ASMFLAGS) $(GLOBAL_USER_ASMFLAGS) $(ARCH_$(ARCH)_ASMFLAGS) $(MODULE_ASMFLAGS) 25$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: ARCH := $(ARCH) 26$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: ASLR := $(ASLR) 27$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: STANDARD_ARCH_NAME := $(STANDARD_ARCH_NAME) 28$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: TRUSTY_APP_LDFLAGS := $(TRUSTY_APP_BASE_LDFLAGS) 29$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: TRUSTY_APP_ALIGNMENT := $(TRUSTY_APP_ALIGNMENT) 30$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: TRUSTY_APP_MEMBASE := $(TRUSTY_APP_MEMBASE) 31$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: TRUSTY_APP_SYMTAB_ENABLED := $(TRUSTY_APP_SYMTAB_ENABLED) 32$(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: trusty/user/base/sdk/make/trusty_sdk.mk 33 @$(MKDIR) 34 $(NOECHO)rm -f $@.tmp 35 $(NOECHO)cp $^ $@.tmp 36 $(NOECHO)echo 'ARCH := $(ARCH)' >> $@.tmp 37 $(NOECHO)echo 'ASLR := $(ASLR)' >> $@.tmp 38 $(NOECHO)echo 'CFLAGS := $(call prepare-sdk-flags,$(SDK_CFLAGS)) $$(CFLAGS)' >> $@.tmp 39 $(NOECHO)echo 'CXXFLAGS := $(call prepare-sdk-flags,$(SDK_CXXFLAGS)) $$(CXXFLAGS)' >> $@.tmp 40 $(NOECHO)echo 'ASMFLAGS := $(call prepare-sdk-flags,$(SDK_ASMFLAGS)) $$(ASMFLAGS)' >> $@.tmp 41 $(NOECHO)echo 'TRUSTY_APP_BASE_LDFLAGS := $$(TRUSTY_APP_LDFLAGS) $(call prepare-sdk-flags,$(TRUSTY_APP_LDFLAGS)) $$(LDFLAGS)' >> $@.tmp 42 $(NOECHO)echo 'TRUSTY_APP_ALIGNMENT := $(TRUSTY_APP_ALIGNMENT)' >> $@.tmp 43 $(NOECHO)echo 'TRUSTY_APP_MEMBASE := $(TRUSTY_APP_MEMBASE)' >> $@.tmp 44 $(NOECHO)echo 'TRUSTY_APP_SYMTAB_ENABLED := $(TRUSTY_APP_SYMTAB_ENABLED)' >> $@.tmp 45 $(NOECHO)echo 'TRUSTY_APP_LIBGCC := $$(SDK_SYSROOT_DIR)/usr/lib/$(LIBCLANG_RT)' >> $@.tmp 46 $(NOECHO)echo 'SCS_ENABLED := $(SCS_ENABLED)' >> $@.tmp 47 $(NOECHO)echo 'STANDARD_ARCH_NAME := $(STANDARD_ARCH_NAME)' >> $@.tmp 48 49 $(NOECHO)echo '# Include the base trusty app makefile which uses the variables provided and' >> $@.tmp 50 $(NOECHO)echo '# defined above to link the final app binary.' >> $@.tmp 51 $(NOECHO)echo 'ifneq ($$(TRUSTY_APP_NAME),)' >> $@.tmp 52 $(NOECHO)echo 'APP_NAME := $$(TRUSTY_APP_NAME)' >> $@.tmp 53 $(NOECHO)echo 'APP_ELF := $$(BUILDDIR)/$$(TRUSTY_APP_NAME).elf' >> $@.tmp 54 $(NOECHO)echo 'APP_MANIFEST := $$(BUILDDIR)/$$(TRUSTY_APP_NAME).manifest' >> $@.tmp 55 $(NOECHO)echo 'include $$(SDK_DIR)/make/trusted_app.mk' >> $@.tmp 56 $(NOECHO)echo 'include $$(SDK_DIR)/make/loadable_app.mk' >> $@.tmp 57 $(NOECHO)echo 'endif' >> $@.tmp 58 59 $(NOECHO)echo '# Bind MODULE_INCLUDES to compile flags' >> $@.tmp 60 $(NOECHO)echo 'MODULE_INCLUDES := $$(addprefix -I,$$(MODULE_INCLUDES))' >> $@.tmp 61 $(NOECHO)echo 'CFLAGS := $$(CFLAGS) $$(MODULE_INCLUDES)' >> $@.tmp 62 $(NOECHO)echo 'CXXFLAGS := $$(CXXFLAGS) $$(MODULE_INCLUDES)' >> $@.tmp 63 $(NOECHO)echo 'ASMFLAGS := $$(ASMFLAGS) $$(MODULE_INCLUDES)' >> $@.tmp 64 65 $(NOECHO)echo '# Add any extra files, e.g. loadable app to default target' >> $@.tmp 66 $(NOECHO)echo 'all:: $$(EXTRA_BUILDDEPS)' >> $@.tmp 67 $(NOECHO)sed -i 's/ \+$$//' $@.tmp 68 $(call TESTANDREPLACEFILE,$@.tmp,$@) 69 70# Include the shared lk headers 71EXTRA_SDK_INCLUDES := $(GLOBAL_UAPI_INCLUDES) $(GLOBAL_SHARED_INCLUDES) $(GLOBAL_USER_INCLUDES) 72EXTRA_SDK_HEADERS := $(foreach dir,$(sort $(EXTRA_SDK_INCLUDES)),$(wildcard $(dir)/*)) 73.PHONY: EXTRA_includes 74EXTRA_includes: EXTRA_SDK_HEADERS := $(EXTRA_SDK_HEADERS) 75EXTRA_includes: $(EXTRA_SDK_HEADERS) 76 $(NOECHO)mkdir -p $(TRUSTY_SDK_INCLUDE_DIR) 77 -cp -r -L $(EXTRA_SDK_HEADERS) $(TRUSTY_SDK_INCLUDE_DIR) 78ALL_SDK_INCLUDES += EXTRA_includes 79 80# Rewrite the exec header from the manifest compiler to remove the extra setup 81# we use in-tree to force the use of our hermetic python host binary. 82$(TRUSTY_SDK_DIR)/tools/manifest_compiler.py: trusty/user/base/tools/manifest_compiler.py 83 @$(MKDIR) 84 $(NOECHO)rm -f $@.tmp 85 $(NOECHO)printf '#!/usr/bin/env python3\n"""' > $@.tmp 86 $(NOECHO)tail -n +8 $^ >> $@.tmp 87 $(NOECHO)chmod +x $@.tmp 88 $(NOECHO)$(BUILDTOOLS_BINDIR)/py3-cmd $@.tmp --help > /dev/null 89 $(call TESTANDREPLACEFILE,$@.tmp,$@) 90ALL_SDK_EXTRA_FILES += $(TRUSTY_SDK_DIR)/tools/manifest_compiler.py 91