nanohub: set postprocess flags for CHRE apps in Android.mk

Bug: 31393280
Change-Id: I06147dbdeb4a7d00c16a395b2a1d0b78365db461
Signed-off-by: Alexey Polyudov <apolyudov@google.com>
diff --git a/firmware/app/chre/chre_test0.app/Android.mk b/firmware/app/chre/chre_test0.app/Android.mk
index c34123f..4e265c2 100644
--- a/firmware/app/chre/chre_test0.app/Android.mk
+++ b/firmware/app/chre/chre_test0.app/Android.mk
@@ -25,13 +25,6 @@
 LOCAL_NANO_APP_ID := 476f6f676c549000
 LOCAL_NANO_APP_VERSION := 0
 
-LOCAL_WHOLE_STATIC_LIBRARIES := \
-    libnanochre                 \
-
-LOCAL_STATIC_LIBRARIES :=       \
-    libnanolibc                 \
-    libnanolibm                 \
-
 LOCAL_SRC_FILES := main.c
 
-include $(BUILD_NANOHUB_APP_EXECUTABLE)
+include $(BUILD_NANOHUB_APP_CHRE_EXECUTABLE)
diff --git a/firmware/app/chre/chre_test1.app/Android.mk b/firmware/app/chre/chre_test1.app/Android.mk
index 871d735..f5a303c 100644
--- a/firmware/app/chre/chre_test1.app/Android.mk
+++ b/firmware/app/chre/chre_test1.app/Android.mk
@@ -25,14 +25,7 @@
 LOCAL_NANO_APP_ID := 476f6f676c549001
 LOCAL_NANO_APP_VERSION := 0
 
-LOCAL_WHOLE_STATIC_LIBRARIES := \
-    libnanochre                 \
-
-LOCAL_STATIC_LIBRARIES :=       \
-    libnanolibc                 \
-    libnanolibm                 \
-
 LOCAL_SRC_FILES := \
     main.cpp \
 
-include $(BUILD_NANOHUB_APP_EXECUTABLE)
+include $(BUILD_NANOHUB_APP_CHRE_EXECUTABLE)
diff --git a/firmware/build/app_chre_executable.mk b/firmware/build/app_chre_executable.mk
new file mode 100644
index 0000000..1007ec7
--- /dev/null
+++ b/firmware/build/app_chre_executable.mk
@@ -0,0 +1,39 @@
+#
+# 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.
+#
+
+LOCAL_MODULE_SUFFIX := .napp
+include $(NANOHUB_APP_CONFIG)
+
+my_variants := $(LOCAL_NANO_VARIANT_LIST)
+
+ifeq ($(strip $(my_variants)),)
+# default is to use all variants supported by this OS
+my_variants := $(AUX_OS_VARIANT_LIST_$(NANO_OS))
+endif
+
+# mark the app as CHRE nanoapp
+LOCAL_NANO_APP_POSTPROCESS_FLAGS += -f 0x10
+
+# add app-side CHRE implementation
+LOCAL_WHOLE_STATIC_LIBRARIES += \
+    libnanochre                 \
+
+# add standard libaries
+LOCAL_STATIC_LIBRARIES +=       \
+    libnanolibc                 \
+    libnanolibm                 \
+
+$(call for-each-variant,$(my_variants),APP,$(BUILD_NANOHUB_EXECUTABLE))
diff --git a/firmware/build/clear_vars.mk b/firmware/build/clear_vars.mk
index aaf106e..333602e 100644
--- a/firmware/build/clear_vars.mk
+++ b/firmware/build/clear_vars.mk
@@ -23,5 +23,6 @@
 LOCAL_NANO_APP_VERSION :=
 LOCAL_NANO_APP_NO_POSTPROCESS :=
 LOCAL_NANO_APP_UNSIGNED :=
+LOCAL_NANO_APP_POSTPROCESS_FLAGS :=
 
 include $(CLEAR_VARS)
diff --git a/firmware/build/config.mk b/firmware/build/config.mk
index f23d93e..e7dbbe4 100644
--- a/firmware/build/config.mk
+++ b/firmware/build/config.mk
@@ -37,6 +37,7 @@
 BUILD_NANOHUB_OS_EXECUTABLE := $(NANO_BUILD)/os_executable.mk
 BUILD_NANOHUB_OS_IMAGE := $(NANO_BUILD)/os_image.mk
 BUILD_NANOHUB_APP_EXECUTABLE := $(NANO_BUILD)/app_executable.mk
+BUILD_NANOHUB_APP_CHRE_EXECUTABLE := $(NANO_BUILD)/app_chre_executable.mk
 
 NANOAPP_POSTPROCESS := $(HOST_OUT_EXECUTABLES)/nanoapp_postprocess
 NANOAPP_SIGN := $(HOST_OUT_EXECUTABLES)/nanoapp_sign
diff --git a/firmware/build/nanohub_executable.mk b/firmware/build/nanohub_executable.mk
index 1f731c3..b1e6ce6 100644
--- a/firmware/build/nanohub_executable.mk
+++ b/firmware/build/nanohub_executable.mk
@@ -103,10 +103,11 @@
 
 $(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) $< $@
+	$(hide)$(NANOAPP_POSTPROCESS) -a $(PRIVATE_NANO_APP_ID) $(PRIVATE_NANO_APP_POSTPROCESS_FLAGS) $< $@
 nanohub_output := $(nanohub_napp)
 endif # NO_POSTPROCESS