| # Add any common flags to the module |
| include make/common_flags.mk |
| |
| # Install libclang_rt into the SDK |
| LIBCLANG_RT := $(notdir $(TRUSTY_APP_LIBGCC)) |
| ALL_SDK_LIBS += $(TRUSTY_SDK_LIB_DIR)/$(LIBCLANG_RT) |
| $(TRUSTY_SDK_LIB_DIR)/$(LIBCLANG_RT): $(TRUSTY_APP_LIBGCC) |
| @$(MKDIR) |
| $(NOECHO)cp $^ $@ |
| |
| # Install SDK make helper |
| ALL_SDK_EXTRA_FILES += $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: SDK_CFLAGS := \ |
| $(GLOBAL_SHARED_OPTFLAGS) $(GLOBAL_USER_OPTFLAGS) $(MODULE_OPTFLAGS) \ |
| $(GLOBAL_SHARED_COMPILEFLAGS) $(GLOBAL_USER_COMPILEFLAGS) $(ARCH_$(ARCH)_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) \ |
| $(GLOBAL_SHARED_CFLAGS) $(GLOBAL_USER_CFLAGS) $(ARCH_$(ARCH)_CFLAGS) $(MODULE_CFLAGS) |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: SDK_CXXFLAGS := \ |
| $(GLOBAL_SHARED_OPTFLAGS) $(GLOBAL_USER_OPTFLAGS) $(MODULE_OPTFLAGS) \ |
| $(GLOBAL_SHARED_COMPILEFLAGS) $(GLOBAL_USER_COMPILEFLAGS) $(ARCH_$(ARCH)_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) \ |
| $(GLOBAL_SHARED_CPPFLAGS) $(GLOBAL_USER_CPPFLAGS) $(ARCH_$(ARCH)_CPPFLAGS) $(MODULE_CPPFLAGS) |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: SDK_ASMFLAGS := \ |
| $(GLOBAL_SHARED_OPTFLAGS) $(GLOBAL_USER_OPTFLAGS) $(MODULE_OPTFLAGS) \ |
| $(GLOBAL_SHARED_COMPILEFLAGS) $(GLOBAL_USER_COMPILEFLAGS) $(ARCH_$(ARCH)_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) \ |
| $(GLOBAL_SHARED_ASMFLAGS) $(GLOBAL_USER_ASMFLAGS) $(ARCH_$(ARCH)_ASMFLAGS) $(MODULE_ASMFLAGS) |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: ARCH := $(ARCH) |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: ASLR := $(ASLR) |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: STANDARD_ARCH_NAME := $(STANDARD_ARCH_NAME) |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: TRUSTY_APP_LDFLAGS := $(TRUSTY_APP_BASE_LDFLAGS) |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: TRUSTY_APP_ALIGNMENT := $(TRUSTY_APP_ALIGNMENT) |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: TRUSTY_APP_MEMBASE := $(TRUSTY_APP_MEMBASE) |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: TRUSTY_APP_SYMTAB_ENABLED := $(TRUSTY_APP_SYMTAB_ENABLED) |
| $(TRUSTY_SDK_DIR)/make/trusty_sdk.mk: trusty/user/base/sdk/make/trusty_sdk.mk |
| @$(MKDIR) |
| $(NOECHO)rm -f $@.tmp |
| $(NOECHO)cp $^ $@.tmp |
| $(NOECHO)echo 'ARCH := $(ARCH)' >> $@.tmp |
| $(NOECHO)echo 'ASLR := $(ASLR)' >> $@.tmp |
| $(NOECHO)echo 'CFLAGS := $(call prepare-sdk-flags,$(SDK_CFLAGS)) $$(CFLAGS)' >> $@.tmp |
| $(NOECHO)echo 'CXXFLAGS := $(call prepare-sdk-flags,$(SDK_CXXFLAGS)) $$(CXXFLAGS)' >> $@.tmp |
| $(NOECHO)echo 'ASMFLAGS := $(call prepare-sdk-flags,$(SDK_ASMFLAGS)) $$(ASMFLAGS)' >> $@.tmp |
| $(NOECHO)echo 'TRUSTY_APP_BASE_LDFLAGS := $$(TRUSTY_APP_LDFLAGS) $(call prepare-sdk-flags,$(TRUSTY_APP_LDFLAGS)) $$(LDFLAGS)' >> $@.tmp |
| $(NOECHO)echo 'TRUSTY_APP_ALIGNMENT := $(TRUSTY_APP_ALIGNMENT)' >> $@.tmp |
| $(NOECHO)echo 'TRUSTY_APP_MEMBASE := $(TRUSTY_APP_MEMBASE)' >> $@.tmp |
| $(NOECHO)echo 'TRUSTY_APP_SYMTAB_ENABLED := $(TRUSTY_APP_SYMTAB_ENABLED)' >> $@.tmp |
| $(NOECHO)echo 'TRUSTY_APP_LIBGCC := $$(SDK_SYSROOT_DIR)/usr/lib/$(LIBCLANG_RT)' >> $@.tmp |
| $(NOECHO)echo 'SCS_ENABLED := $(SCS_ENABLED)' >> $@.tmp |
| $(NOECHO)echo 'STANDARD_ARCH_NAME := $(STANDARD_ARCH_NAME)' >> $@.tmp |
| |
| $(NOECHO)echo '# Include the base trusty app makefile which uses the variables provided and' >> $@.tmp |
| $(NOECHO)echo '# defined above to link the final app binary.' >> $@.tmp |
| $(NOECHO)echo 'ifneq ($$(TRUSTY_APP_NAME),)' >> $@.tmp |
| $(NOECHO)echo 'APP_NAME := $$(TRUSTY_APP_NAME)' >> $@.tmp |
| $(NOECHO)echo 'APP_ELF := $$(BUILDDIR)/$$(TRUSTY_APP_NAME).elf' >> $@.tmp |
| $(NOECHO)echo 'APP_MANIFEST := $$(BUILDDIR)/$$(TRUSTY_APP_NAME).manifest' >> $@.tmp |
| $(NOECHO)echo 'include $$(SDK_DIR)/make/trusted_app.mk' >> $@.tmp |
| $(NOECHO)echo 'include $$(SDK_DIR)/make/loadable_app.mk' >> $@.tmp |
| $(NOECHO)echo 'endif' >> $@.tmp |
| |
| $(NOECHO)echo '# Bind MODULE_INCLUDES to compile flags' >> $@.tmp |
| $(NOECHO)echo 'MODULE_INCLUDES := $$(addprefix -I,$$(MODULE_INCLUDES))' >> $@.tmp |
| $(NOECHO)echo 'CFLAGS := $$(CFLAGS) $$(MODULE_INCLUDES)' >> $@.tmp |
| $(NOECHO)echo 'CXXFLAGS := $$(CXXFLAGS) $$(MODULE_INCLUDES)' >> $@.tmp |
| $(NOECHO)echo 'ASMFLAGS := $$(ASMFLAGS) $$(MODULE_INCLUDES)' >> $@.tmp |
| |
| $(NOECHO)echo '# Add any extra files, e.g. loadable app to default target' >> $@.tmp |
| $(NOECHO)echo 'all:: $$(EXTRA_BUILDDEPS)' >> $@.tmp |
| $(NOECHO)sed -i 's/ \+$$//' $@.tmp |
| $(call TESTANDREPLACEFILE,$@.tmp,$@) |
| |
| # Include the shared lk headers |
| EXTRA_SDK_INCLUDES := $(GLOBAL_UAPI_INCLUDES) $(GLOBAL_SHARED_INCLUDES) $(GLOBAL_USER_INCLUDES) |
| EXTRA_SDK_HEADERS := $(foreach dir,$(sort $(EXTRA_SDK_INCLUDES)),$(wildcard $(dir)/*)) |
| .PHONY: EXTRA_includes |
| EXTRA_includes: EXTRA_SDK_HEADERS := $(EXTRA_SDK_HEADERS) |
| EXTRA_includes: $(EXTRA_SDK_HEADERS) |
| $(NOECHO)mkdir -p $(TRUSTY_SDK_INCLUDE_DIR) |
| -cp -r -L $(EXTRA_SDK_HEADERS) $(TRUSTY_SDK_INCLUDE_DIR) |
| ALL_SDK_INCLUDES += EXTRA_includes |
| |
| # Rewrite the exec header from the manifest compiler to remove the extra setup |
| # we use in-tree to force the use of our hermetic python host binary. |
| $(TRUSTY_SDK_DIR)/tools/manifest_compiler.py: trusty/user/base/tools/manifest_compiler.py |
| @$(MKDIR) |
| $(NOECHO)rm -f $@.tmp |
| $(NOECHO)printf '#!/usr/bin/env python3\n"""' > $@.tmp |
| $(NOECHO)tail -n +8 $^ >> $@.tmp |
| $(NOECHO)chmod +x $@.tmp |
| $(NOECHO)$(BUILDTOOLS_BINDIR)/py3-cmd $@.tmp --help > /dev/null |
| $(call TESTANDREPLACEFILE,$@.tmp,$@) |
| ALL_SDK_EXTRA_FILES += $(TRUSTY_SDK_DIR)/tools/manifest_compiler.py |