1# 2# Nanoapp Makefile 3# 4# Include this file in your nanoapp Makefile to produce binary nanoapps to 5# target a variety of architectures. 6# 7 8# Nanoapp Build Configuration Checks ########################################### 9 10ifeq ($(NANOAPP_NAME),) 11$(error "The NANOAPP_NAME variable must be set to the name of the nanoapp. \ 12 This should be assigned by the Makefile that includes app.mk.") 13endif 14 15ifeq ($(NANOAPP_ID),) 16$(error "The NANOAPP_ID variable must be set to the ID of the nanoapp. \ 17 This should be assigned by the Makefile that includes app.mk.") 18endif 19 20ifeq ($(NANOAPP_VERSION),) 21$(error "The NANOAPP_VERSION variable must be set to the version of the nanoapp. \ 22 This should be assigned by the Makefile that includes app.mk.") 23endif 24 25NANOAPP_VERSION := $(strip $(NANOAPP_VERSION)) 26MATCHED_NANOAPP_VERSION := $(shell echo $(NANOAPP_VERSION) \ 27 | grep "^0x[0-9a-fA-F]\{8\}") 28ifneq ($(MATCHED_NANOAPP_VERSION), $(NANOAPP_VERSION)) 29$(error "The NANOAPP_VERSION must be a 4-byte hex-formatted integer. Example: \ 30 0x00000101") 31endif 32 33ifeq ($(NANOAPP_NAME_STRING),) 34$(error "The NANOAPP_NAME_STRING variable must be set to the friendly name of \ 35 the nanoapp. This should be assigned by the Makefile that includes \ 36 app.mk.") 37endif 38 39ifeq ($(NANOAPP_VENDOR_STRING),) 40$(info "NANOAPP_VENDOR_STRING not supplied, defaulting to \"Google\".") 41NANOAPP_VENDOR_STRING = \"Google\" 42endif 43 44ifeq ($(NANOAPP_IS_SYSTEM_NANOAPP),) 45$(info "NANOAPP_IS_SYSTEM_NANOAPP not supplied, defaulting to 0.") 46NANOAPP_IS_SYSTEM_NANOAPP = 0 47endif 48 49ifeq ($(CHRE_PREFIX),) 50ifeq ($(ANDROID_BUILD_TOP),) 51$(error "You must run lunch, or specify an explicit CHRE_PREFIX environment \ 52 variable") 53else 54CHRE_PREFIX = $(ANDROID_BUILD_TOP)/system/chre 55endif 56endif 57 58# Nanoapp Build ################################################################ 59 60# This variable indicates to the variants that some post-processing may be 61# required as the target is a nanoapp. 62IS_NANOAPP_BUILD = true 63 64# Common App Build Configuration ############################################### 65 66OUTPUT_NAME = $(NANOAPP_NAME) 67 68# Common Compiler Flags ######################################################## 69 70# Add the CHRE API to the include search path. 71COMMON_CFLAGS += -I$(CHRE_PREFIX)/chre_api/include/chre_api 72 73# Add util and platform/shared to the include search path. 74COMMON_CFLAGS += -I$(CHRE_PREFIX)/util/include 75COMMON_CFLAGS += -I$(CHRE_PREFIX)/platform/shared/include 76 77# Allows a nanoapp to know that is compiled separately from the CHRE system. 78COMMON_CFLAGS += -DCHRE_IS_NANOAPP_BUILD 79 80# Compile FlatBuffers in a portable way. 81COMMON_CFLAGS += -DFLATBUFFERS_CHRE 82 83# Nanoapp configuration flags. 84COMMON_CFLAGS += -DNANOAPP_ID=$(NANOAPP_ID) 85COMMON_CFLAGS += -DNANOAPP_VERSION=$(NANOAPP_VERSION) 86COMMON_CFLAGS += -DNANOAPP_VENDOR_STRING=$(NANOAPP_VENDOR_STRING) 87COMMON_CFLAGS += -DNANOAPP_NAME_STRING=$(NANOAPP_NAME_STRING) 88COMMON_CFLAGS += -DNANOAPP_IS_SYSTEM_NANOAPP=$(NANOAPP_IS_SYSTEM_NANOAPP) 89 90# Version String ############################################################### 91 92COMMIT_HASH_DIRTY_SUFFIX = $(shell git diff --quiet || echo -dirty) 93COMMIT_HASH = $(shell git log -1 --pretty="format:%h" .)$(COMMIT_HASH_DIRTY_SUFFIX) 94NANOAPP_VERSION_STRING = "nanoapp=$(NANOAPP_NAME)@$(COMMIT_HASH)" 95COMMON_CFLAGS += -DNANOAPP_VERSION_STRING="\"$(NANOAPP_VERSION_STRING)\"" 96 97# Variant-specific Nanoapp Support Source Files ################################ 98 99APP_SUPPORT_PATH = $(CHRE_PREFIX)/build/app_support 100DSO_SUPPORT_LIB_PATH = $(CHRE_PREFIX)/platform/shared/nanoapp 101DSO_SUPPORT_LIB_SRCS = $(DSO_SUPPORT_LIB_PATH)/nanoapp_support_lib_dso.cc 102 103GOOGLE_HEXAGONV60_SLPI_SRCS += $(DSO_SUPPORT_LIB_SRCS) 104GOOGLE_HEXAGONV62_SLPI_SRCS += $(DSO_SUPPORT_LIB_SRCS) 105GOOGLE_HEXAGONV62_SLPI-UIMG_SRCS += $(DSO_SUPPORT_LIB_SRCS) 106GOOGLE_HEXAGONV65_ADSP-SEE_SRCS += $(DSO_SUPPORT_LIB_SRCS) 107GOOGLE_HEXAGONV65_ADSP-SEE-UIMG_SRCS += $(DSO_SUPPORT_LIB_SRCS) 108GOOGLE_HEXAGONV65_SLPI-SEE_SRCS += $(DSO_SUPPORT_LIB_SRCS) 109GOOGLE_HEXAGONV65_SLPI-SEE-UIMG_SRCS += $(DSO_SUPPORT_LIB_SRCS) 110GOOGLE_HEXAGONV66_SLPI-SEE_SRCS += $(DSO_SUPPORT_LIB_SRCS) 111GOOGLE_HEXAGONV66_SLPI-SEE-UIMG_SRCS += $(DSO_SUPPORT_LIB_SRCS) 112GOOGLE_ARM64_ANDROID_SRCS += $(DSO_SUPPORT_LIB_SRCS) 113GOOGLE_X86_LINUX_SRCS += $(DSO_SUPPORT_LIB_SRCS) 114QCOM_HEXAGONV60_NANOHUB_SRCS += $(APP_SUPPORT_PATH)/qcom_nanohub/app_support.cc 115QCOM_HEXAGONV60_NANOHUB-UIMG_SRCS += $(APP_SUPPORT_PATH)/qcom_nanohub/app_support_uimg.cc 116 117# Makefile Includes ############################################################ 118 119# Common includes 120include $(CHRE_PREFIX)/build/defs.mk 121include $(CHRE_PREFIX)/build/common.mk 122 123# CHRE API version. 124include $(CHRE_PREFIX)/chre_api/chre_api_version.mk 125 126# Supported variants includes 127include $(CHRE_PREFIX)/build/variant/google_arm64_android.mk 128include $(CHRE_PREFIX)/build/variant/google_cm4_nanohub.mk 129include $(CHRE_PREFIX)/build/variant/google_hexagonv55_slpi-see.mk 130include $(CHRE_PREFIX)/build/variant/google_hexagonv60_slpi.mk 131include $(CHRE_PREFIX)/build/variant/google_hexagonv62_slpi.mk 132include $(CHRE_PREFIX)/build/variant/google_hexagonv62_slpi-uimg.mk 133include $(CHRE_PREFIX)/build/variant/google_hexagonv65_adsp-see.mk 134include $(CHRE_PREFIX)/build/variant/google_hexagonv65_adsp-see-uimg.mk 135include $(CHRE_PREFIX)/build/variant/google_hexagonv65_slpi-see.mk 136include $(CHRE_PREFIX)/build/variant/google_hexagonv65_slpi-see-uimg.mk 137include $(CHRE_PREFIX)/build/variant/google_hexagonv66_slpi-see.mk 138include $(CHRE_PREFIX)/build/variant/google_hexagonv66_slpi-see-uimg.mk 139include $(CHRE_PREFIX)/build/variant/google_x86_linux.mk 140include $(CHRE_PREFIX)/build/variant/qcom_hexagonv60_nanohub.mk 141include $(CHRE_PREFIX)/build/variant/qcom_hexagonv60_nanohub-uimg.mk 142