You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
5.2 KiB
156 lines
5.2 KiB
#
|
|
# Copyright (C) 2016 The Android Open Source Project
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
include $(BUILD_SYSTEM)/aux_toolchain.mk
|
|
|
|
ifeq ($(AUX_BUILD_NOT_COMPATIBLE),)
|
|
|
|
include $(NANO_BUILD)/config_internal.mk
|
|
|
|
intermediates := $(call intermediates-dir-for,EXECUTABLES,$(LOCAL_MODULE),AUX)
|
|
|
|
nanohub_linked_map := $(intermediates)/LINKED/$(LOCAL_MODULE).map
|
|
nanohub_unchecked_elf := $(intermediates)/UNCHECKED/$(LOCAL_MODULE).elf
|
|
nanohub_checked_elf := $(intermediates)/CHECKED/$(LOCAL_MODULE).elf
|
|
nanohub_checked_bin := $(intermediates)/CHECKED/$(LOCAL_MODULE).bin
|
|
|
|
LOCAL_CUSTOM_BUILD_STEP_INPUT := $(nanohub_unchecked_elf)
|
|
|
|
|
|
gen := $(call generated-sources-dir-for,EXECUTABLES,$(LOCAL_MODULE),AUX)
|
|
|
|
linker_script:=
|
|
|
|
ifeq ($(LOCAL_NANO_MODULE_TYPE),APP)
|
|
linker_script := $(NANOHUB_OS_PATH)/os/platform/$(AUX_ARCH)/lkr/app.lkr
|
|
endif
|
|
|
|
ifeq ($(LOCAL_NANO_MODULE_TYPE),BL)
|
|
ifeq ($(AUX_ARCH),stm32)
|
|
linker_script := $(gen)/bl.lkr
|
|
ifeq ($(NANO_VARIANT_LKR_MAP),)
|
|
$(call nano-gen-linker-script,$(linker_script),bl,$(AUX_SUBARCH),stm32f4xx,$(AUX_ARCH))
|
|
else
|
|
$(call nano-gen-linker-script-map,$(linker_script),bl,$(NANO_VARIANT_LKR_MAP),stm32f4xx,$(AUX_ARCH))
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(LOCAL_NANO_MODULE_TYPE),OS)
|
|
ifeq ($(AUX_ARCH),native)
|
|
linker_script := $(gen)/os.lkr
|
|
$(call nano-gen-linker-script-native,$(linker_script),os,$(AUX_SUBARCH),native,$(AUX_ARCH))
|
|
endif
|
|
ifeq ($(AUX_ARCH),stm32)
|
|
linker_script := $(gen)/os.lkr
|
|
ifeq ($(NANO_VARIANT_LKR_MAP),)
|
|
$(call nano-gen-linker-script,$(linker_script),os,$(AUX_SUBARCH),stm32f4xx,$(AUX_ARCH))
|
|
else
|
|
$(call nano-gen-linker-script-map,$(linker_script),os,$(NANO_VARIANT_LKR_MAP),stm32f4xx,$(AUX_ARCH))
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(linker_script),)
|
|
$(error $(LOCAL_PATH): $(LOCAL_MODULE): linker script is not defined for ARCH=$(AUX_ARCH) TYPE=$(LOCAL_NANO_MODULE_TYPE))
|
|
endif
|
|
|
|
LOCAL_ADDITIONAL_DEPENDENCIES += $(linker_script)
|
|
LOCAL_LDFLAGS += -T $(linker_script)
|
|
|
|
ifneq ($(LOCAL_NANO_APP_VERSION),)
|
|
LOCAL_NANO_APP_POSTPROCESS_FLAGS += -e $(LOCAL_NANO_APP_VERSION)
|
|
endif
|
|
|
|
$(nanohub_checked_elf): $(nanohub_unchecked_elf)
|
|
$(hide)echo "nanohub Symcheck $@ <= $<"
|
|
$(copy-file-to-target)
|
|
nanohub_output := $(nanohub_checked_elf)
|
|
|
|
# objcopy is per-cpu only
|
|
objcopy_params:=
|
|
|
|
# optional objcopy step
|
|
ifneq ($(strip $(LOCAL_OBJCOPY_SECT)),)
|
|
|
|
objcopy_params := $(GLOBAL_NANO_OBJCOPY_FLAGS) $(GLOBAL_NANO_OBJCOPY_FLAGS_$(AUX_CPU)) $(foreach sect,$(LOCAL_OBJCOPY_SECT), -j $(sect))
|
|
|
|
$(nanohub_checked_bin): PRIVATE_OBJCOPY_ARGS := $(objcopy_params)
|
|
$(nanohub_checked_bin): PRIVATE_MODULE := $(LOCAL_MODULE)
|
|
$(nanohub_checked_bin): PRIVATE_OBJCOPY := $(AUX_OBJCOPY)
|
|
$(nanohub_checked_bin): $(nanohub_output)
|
|
$(hide)echo "nanohub OBJCOPY $(PRIVATE_MODULE) ($@)"
|
|
$(hide)$(PRIVATE_OBJCOPY) $(PRIVATE_OBJCOPY_ARGS) $< $@
|
|
nanohub_output := $(nanohub_checked_bin)
|
|
|
|
objcopy_params :=
|
|
objcopy_sect :=
|
|
else
|
|
LOCAL_NANO_APP_NO_POSTPROCESS := true
|
|
LOCAL_NANO_APP_UNSIGNED := true
|
|
endif
|
|
|
|
ifeq ($(LOCAL_NANO_MODULE_TYPE),APP)
|
|
|
|
nanohub_napp := $(intermediates)/CHECKED/$(LOCAL_MODULE).napp
|
|
nanohub_signed_napp := $(intermediates)/CHECKED/$(LOCAL_MODULE).signed.napp
|
|
|
|
# postprocess only works on BIN; if it is used, objcopy must be used as well
|
|
ifneq ($(LOCAL_NANO_APP_NO_POSTPROCESS),true)
|
|
$(if $(LOCAL_OBJCOPY_SECT),,\
|
|
$(error $(LOCAL_PATH): $(LOCAL_MODULE): nanoapp postprocess step requires LOCAL_OBJCOPY_SECT defined))
|
|
|
|
$(nanohub_napp): PRIVATE_NANO_APP_ID := $(LOCAL_NANO_APP_ID)
|
|
$(nanohub_napp): PRIVATE_NANO_APP_VER := $(LOCAL_NANO_APP_VERSION)
|
|
$(nanohub_napp): PRIVATE_NANO_APP_POSTPROCESS_FLAGS := $(LOCAL_NANO_APP_POSTPROCESS_FLAGS)
|
|
|
|
$(nanohub_napp): $(nanohub_output) $(NANOAPP_POSTPROCESS)
|
|
$(hide)echo "nanoapp POSTPROCESS $@ <= $<"
|
|
$(hide)$(NANOAPP_POSTPROCESS) -a $(PRIVATE_NANO_APP_ID) $(PRIVATE_NANO_APP_POSTPROCESS_FLAGS) $< $@
|
|
nanohub_output := $(nanohub_napp)
|
|
endif # NO_POSTPROCESS
|
|
|
|
ifneq ($(LOCAL_NANO_APP_UNSIGNED),true)
|
|
$(if $(filter true,$(LOCAL_NANO_APP_NO_POSTPROCESS)),\
|
|
$(error $(LOCAL_PATH): $(LOCAL_MODULE): nanoapp sign step requires nanoapp postprocess))
|
|
|
|
nanohub_pvt_key := $(NANOHUB_OS_PATH)/os/platform/$(AUX_ARCH)/misc/debug.privkey
|
|
nanohub_pub_key := $(NANOHUB_OS_PATH)/os/platform/$(AUX_ARCH)/misc/debug.pubkey
|
|
|
|
$(nanohub_signed_napp): PRIVATE_PVT_KEY := $(nanohub_pvt_key)
|
|
$(nanohub_signed_napp): PRIVATE_PUB_KEY := $(nanohub_pub_key)
|
|
|
|
$(nanohub_signed_napp): $(nanohub_napp) $(NANOAPP_SIGN)
|
|
$(hide)echo "nanoapp SIGN $@ <= $<"
|
|
$(hide)$(NANOAPP_SIGN) -s -e $(PRIVATE_PVT_KEY) -m $(PRIVATE_PUB_KEY) $< $@
|
|
|
|
nanohub_output := $(nanohub_signed_napp)
|
|
endif # !UNSIGNED
|
|
|
|
endif # TYPE == APP
|
|
|
|
LOCAL_CUSTOM_BUILD_STEP_OUTPUT := $(nanohub_output)
|
|
LOCAL_LDFLAGS += -Wl,-Map,$(nanohub_linked_map)
|
|
|
|
###############################
|
|
include $(BUILD_AUX_EXECUTABLE)
|
|
###############################
|
|
|
|
LOCAL_CUSTOM_BUILD_STEP_INPUT :=
|
|
LOCAL_CUSTOM_BUILD_STEP_OUTPUT :=
|
|
|
|
endif # AUX_BUILD_NOT_COMPATIBLE
|