blob: 93740cca94eeafcc2e3865e16071a44a49bcc139 [file] [log] [blame]
# 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