Skip to content

Commit 86dc672

Browse files
committed
[Build/Android] revise build option
Code clean, revise make files for android build. - add new file for paho-mqtt prebuilt library. - separate native initialization and sub-plugin registration. - clean up build options. - allow tf-lite shared library only. Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
1 parent 9fa6b1e commit 86dc672

20 files changed

+583
-502
lines changed

java/android/nnstreamer/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ android {
1212
externalNativeBuild {
1313
ndkBuild {
1414
ndkVersion "25.2.9519653"
15+
1516
def gstRoot
1617

1718
if (project.hasProperty('gstAndroidRoot'))
@@ -52,7 +53,8 @@ android {
5253
if (mlApiRoot == null)
5354
throw new GradleException('ML_API_ROOT must be set, or "mlApiRoot" must be defined in your gradle.properties')
5455

55-
arguments "NDK_APPLICATION_MK=src/main/jni/Application.mk",
56+
arguments "NDK_PROJECT_PATH=./",
57+
"NDK_APPLICATION_MK=src/main/jni/Application.mk",
5658
"GSTREAMER_JAVA_SRC_DIR=src/main/java",
5759
"GSTREAMER_ROOT_ANDROID=$gstRoot",
5860
"GSTREAMER_ASSETS_DIR=src/main/assets",

java/android/nnstreamer/src/androidTest/java/org/nnsuite/nnstreamer/APITestPipeline.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2219,6 +2219,7 @@ public void onNewDataReceived(TensorsData data) {
22192219
}
22202220
}
22212221

2222+
@Ignore("Build library with flatbuf.")
22222223
@Test
22232224
public void testFlatbuf() {
22242225
/* This test assume that the NNStreamer library is built with Flatbuf (default option) */
@@ -2270,7 +2271,7 @@ public void onNewDataReceived(TensorsData data) {
22702271
}
22712272
}
22722273

2273-
@Ignore("Checking available mqtt broker is not ready, please ignore")
2274+
@Ignore("Build library with mqtt and check available mqtt broker is ready.")
22742275
@Test
22752276
public void testMQTTElement() {
22762277
String sub_desc = "mqttsrc sub-topic=test/videotestsrc ! " +

java/android/nnstreamer/src/main/jni/Android-llama2c-prebuilt.mk

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
#
66
# This mk file defines a prebuilt shared library for the llama2.c module.
77
#------------------------------------------------------
8-
LOCAL_PATH := $(call my-dir)
9-
108
ifndef LLAMA2C_DIR
119
$(error LLAMA2C_DIR is not defined!)
1210
endif
@@ -16,8 +14,6 @@ LLAMA2C_LIB_PATH := $(LLAMA2C_DIR)/lib
1614
#------------------------------------------------------
1715
# The prebuilt shared library for llama2.c
1816
#------------------------------------------------------
19-
LLAMA2C_PREBUILT_LIBS :=
20-
2117
include $(CLEAR_VARS)
2218
LOCAL_MODULE := llama2c
2319
LOCAL_SRC_FILES := \
@@ -27,4 +23,5 @@ LOCAL_SRC_FILES := \
2723
$(LLAMA2C_DIR)/transformer.c \
2824
$(LLAMA2C_DIR)/util.c
2925
include $(BUILD_SHARED_LIBRARY)
30-
LLAMA2C_PREBUILT_LIBS += llama2c
26+
27+
LLAMA2C_PREBUILT_LIBS := llama2c

java/android/nnstreamer/src/main/jni/Android-llamacpp-prebuilt.mk

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@
44
#
55
# This mk file defines a prebuilt shared library for the llamacpp module.
66
#------------------------------------------------------
7-
8-
LOCAL_PATH := $(call my-dir)
9-
107
ifndef LLAMACPP_LIB_PATH
118
$(error LLAMACPP_LIB_PATH is not defined!)
129
endif
@@ -20,8 +17,6 @@ else
2017
$(error Target arch ABI not supported: $(TARGET_ARCH_ABI))
2118
endif
2219

23-
LLAMACPP_PREBUILT_LIBS :=
24-
2520
#------------------------------------------------------
2621
# llamacpp prebuilt shared libraries
2722
#------------------------------------------------------
@@ -44,5 +39,5 @@ include $(CLEAR_VARS)
4439
LOCAL_MODULE := ggml-base
4540
LOCAL_SRC_FILES := $(LLAMACPP_LIB_PATH)/libggml-base.so
4641
include $(PREBUILT_SHARED_LIBRARY)
47-
LLAMACPP_PREBUILT_LIBS += llama ggml ggml-cpu ggml-base
4842

43+
LLAMACPP_PREBUILT_LIBS := llama ggml ggml-cpu ggml-base

java/android/nnstreamer/src/main/jni/Android-mxnet-prebuilt.mk

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,16 @@
55
# This mk file defines prebuilt libraries for mxnet module.
66
# (mxnet core libraries, arm64-v8a only)
77
#------------------------------------------------------
8-
LOCAL_PATH := $(call my-dir)
9-
108
ifndef MXNET_LIB_PATH
119
$(error MXNET_LIB_PATH is not defined!)
1210
endif
1311

14-
MXNET_PREBUILT_LIBS :=
15-
1612
#------------------------------------------------------
1713
# mxnet prebuilt shared libraries
1814
#------------------------------------------------------
1915
include $(CLEAR_VARS)
2016
LOCAL_MODULE := mxnet
2117
LOCAL_SRC_FILES := $(MXNET_LIB_PATH)/libmxnet.so
2218
include $(PREBUILT_SHARED_LIBRARY)
23-
MXNET_PREBUILT_LIBS += mxnet
19+
20+
MXNET_PREBUILT_LIBS := mxnet

java/android/nnstreamer/src/main/jni/Android-nnfw-prebuilt.mk

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,16 @@
66
# (nnfw core libraries, arm64-v8a only)
77
# You can download specific version of nnfw libraries from https://github.com/Samsung/ONE/releases.
88
#------------------------------------------------------
9-
LOCAL_PATH := $(call my-dir)
10-
119
ifndef NNFW_LIB_PATH
1210
$(error NNFW_LIB_PATH is not defined!)
1311
endif
1412

15-
NNFW_PREBUILT_LIBS :=
16-
1713
#------------------------------------------------------
1814
# nnfw prebuilt shared libraries
1915
#------------------------------------------------------
2016
include $(CLEAR_VARS)
2117
LOCAL_MODULE := nnfw-libnnfw-dev
2218
LOCAL_SRC_FILES := $(NNFW_LIB_PATH)/libnnfw-dev.so
2319
include $(PREBUILT_SHARED_LIBRARY)
24-
NNFW_PREBUILT_LIBS += nnfw-libnnfw-dev
20+
21+
NNFW_PREBUILT_LIBS := nnfw-libnnfw-dev

java/android/nnstreamer/src/main/jni/Android-nnstreamer-prebuilt.mk

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ ENABLE_MXNET := false
2121
#------------------------------------------------------
2222
# define required libraries for nnstreamer
2323
#------------------------------------------------------
24-
NNSTREAMER_LIBS := nnstreamer-native gst-android cpp-shared
24+
NNSTREAMER_LIBS := nnstreamer-android gst-android
2525

2626
#------------------------------------------------------
27-
# nnstreamer-native
27+
# nnstreamer android
2828
#------------------------------------------------------
2929
include $(CLEAR_VARS)
30-
LOCAL_MODULE := nnstreamer-native
31-
LOCAL_SRC_FILES := $(NNSTREAMER_LIB_PATH)/libnnstreamer-native.so
30+
LOCAL_MODULE := nnstreamer-android
31+
LOCAL_SRC_FILES := $(NNSTREAMER_LIB_PATH)/libnnstreamer_android.so
3232
include $(PREBUILT_SHARED_LIBRARY)
3333

3434
#------------------------------------------------------
@@ -40,12 +40,14 @@ LOCAL_SRC_FILES := $(NNSTREAMER_LIB_PATH)/libgstreamer_android.so
4040
include $(PREBUILT_SHARED_LIBRARY)
4141

4242
#------------------------------------------------------
43-
# c++ shared
43+
# Tensorflow-Lite
4444
#------------------------------------------------------
45-
include $(CLEAR_VARS)
46-
LOCAL_MODULE := cpp-shared
47-
LOCAL_SRC_FILES := $(NNSTREAMER_LIB_PATH)/libc++_shared.so
48-
include $(PREBUILT_SHARED_LIBRARY)
45+
ifeq ($(ENABLE_TF_LITE),true)
46+
TF_LITE_LIB_PATH := $(NNSTREAMER_LIB_PATH)
47+
include $(LOCAL_PATH)/Android-tensorflow-lite-prebuilt.mk
48+
49+
NNSTREAMER_LIBS += $(TF_LITE_PREBUILT_LIBS)
50+
endif
4951

5052
#------------------------------------------------------
5153
# SNAP (arm64-v8a only)

java/android/nnstreamer/src/main/jni/Android-nnstreamer.mk

Lines changed: 13 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ ifndef ML_API_ROOT
1111
$(error ML_API_ROOT is not defined!)
1212
endif
1313

14+
NNSTREAMER_EXTERNAL_LIBS :=
15+
1416
# nnstreamer c-api
1517
NNSTREAMER_CAPI_INCLUDES := \
1618
$(NNSTREAMER_ROOT)/gst/nnstreamer/tensor_filter \
@@ -54,45 +56,22 @@ NNSTREAMER_CAPI_INCLUDES += $(GSTREAMER_ROOT)/include/orc-0.4
5456
NNS_API_FLAGS += -DHAVE_ORC=1
5557
endif
5658

57-
ifeq ($(ENABLE_TENSOR_QUERY), true)
58-
ifndef NNSTREAMER_EDGE_ROOT
59-
$(error NNSTREAMER_EDGE_ROOT is not defined!)
59+
ifeq ($(ENABLE_MQTT), true)
60+
NNSTREAMER_SRC_FILES += $(NNSTREAMER_MQTT_SRCS)
61+
NNSTREAMER_EXTERNAL_LIBS += libpaho-mqtt-c
6062
endif
6163

64+
ifeq ($(ENABLE_ML_OFFLOADING), true)
6265
NNSTREAMER_SRC_FILES += \
63-
$(NNSTREAMER_QUERY_SRCS)
64-
65-
NNS_API_FLAGS += -DENABLE_NNSTREAMER_EDGE=1
66+
$(NNSTREAMER_QUERY_SRCS) \
67+
$(NNSTREAMER_EDGE_SRCS)
6668

67-
include $(NNSTREAMER_EDGE_ROOT)/jni/nnstreamer-edge.mk
68-
endif # ifeq ($(ENABLE_TENSOR_QUERY), true)
69-
70-
# TODO: Add nnsquery prebuilt-lib and enable mqtt-hybrid
7169
ifeq ($(ENABLE_MQTT), true)
72-
NNSTREAMER_SRC_FILES += \
73-
$(NNSTREAMER_MQTT_SRCS)
74-
75-
NNS_API_FLAGS += -DENABLE_MQTT=1
76-
77-
PAHO_MQTT_C_DIR := $(LOCAL_PATH)/paho-mqtt-c
78-
PAHO_MQTT_C_INCLUDES := $(PAHO_MQTT_C_DIR)/include
79-
80-
ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
81-
PAHO_MQTT_C_LIB_PATH := $(PAHO_MQTT_C_DIR)/lib
82-
else
83-
$(error For MQTT, target arch ABI not supported: $(TARGET_ARCH_ABI))
70+
NNSTREAMER_SRC_FILES += $(NNSTREAMER_EDGE_MQTT_SRCS)
8471
endif
8572

86-
include $(CLEAR_VARS)
87-
LOCAL_MODULE := paho-mqtt3a
88-
LOCAL_SRC_FILES := $(PAHO_MQTT_C_LIB_PATH)/libpaho-mqtt3a.a
89-
include $(PREBUILT_STATIC_LIBRARY)
90-
91-
include $(CLEAR_VARS)
92-
LOCAL_MODULE := paho-mqtt3c
93-
LOCAL_SRC_FILES := $(PAHO_MQTT_C_LIB_PATH)/libpaho-mqtt3c.a
94-
include $(PREBUILT_STATIC_LIBRARY)
95-
endif # ifeq ($(ENABLE_MQTT), true)
73+
NNSTREAMER_CAPI_INCLUDES += $(NNSTREAMER_EDGE_INCLUDES)
74+
endif
9675

9776
endif # ifneq ($(NNSTREAMER_API_OPTION),single)
9877

@@ -101,22 +80,8 @@ include $(CLEAR_VARS)
10180
LOCAL_MODULE := nnstreamer
10281
LOCAL_SRC_FILES := $(sort $(NNSTREAMER_SRC_FILES))
10382
LOCAL_C_INCLUDES := $(NNSTREAMER_INCLUDES) $(GST_HEADERS_COMMON) $(NNSTREAMER_CAPI_INCLUDES)
104-
105-
ifeq ($(ENABLE_TENSOR_QUERY), true)
106-
LOCAL_SRC_FILES += $(NNSTREAMER_EDGE_SRCS)
107-
LOCAL_C_INCLUDES += $(NNSTREAMER_EDGE_INCLUDES)
108-
endif
109-
110-
ifeq ($(ENABLE_MQTT), true)
111-
LOCAL_C_INCLUDES += $(PAHO_MQTT_C_INCLUDES)
112-
endif
113-
114-
LOCAL_EXPORT_C_INCLUDES := $(NNSTREAMER_CAPI_INCLUDES)
11583
LOCAL_CFLAGS := -O3 -fPIC $(NNS_API_FLAGS) -Wno-deprecated-declarations
116-
LOCAL_CXXFLAGS := -O3 -fPIC -frtti -fexceptions $(NNS_API_FLAGS) -Wno-c99-designator
117-
118-
ifeq ($(ENABLE_MQTT), true)
119-
LOCAL_STATIC_LIBRARIES := paho-mqtt3a paho-mqtt3c
120-
endif
84+
LOCAL_CXXFLAGS := -O3 -fPIC -frtti -fexceptions $(NNS_API_FLAGS)
85+
LOCAL_STATIC_LIBRARIES := $(NNSTREAMER_EXTERNAL_LIBS)
12186

12287
include $(BUILD_STATIC_LIBRARY)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
LOCAL_PATH := $(call my-dir)
2+
3+
PAHO_MQTT_C_DIR := $(LOCAL_PATH)/paho-mqtt-c
4+
PAHO_MQTT_C_INCLUDES := $(PAHO_MQTT_C_DIR)/include
5+
6+
ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
7+
PAHO_MQTT_C_LIB_PATH := $(PAHO_MQTT_C_DIR)/lib
8+
else
9+
$(error For MQTT, target arch ABI is not supported: $(TARGET_ARCH_ABI))
10+
endif
11+
12+
#------------------------------------------------------
13+
# paho-mqtt-c prebuilt libraries
14+
#------------------------------------------------------
15+
include $(CLEAR_VARS)
16+
LOCAL_MODULE := paho-mqtt3a
17+
LOCAL_SRC_FILES := $(PAHO_MQTT_C_LIB_PATH)/libpaho-mqtt3a.a
18+
include $(PREBUILT_STATIC_LIBRARY)
19+
20+
include $(CLEAR_VARS)
21+
LOCAL_MODULE := paho-mqtt3c
22+
LOCAL_SRC_FILES := $(PAHO_MQTT_C_LIB_PATH)/libpaho-mqtt3c.a
23+
include $(PREBUILT_STATIC_LIBRARY)
24+
25+
#------------------------------------------------------
26+
# paho-mqtt-c module
27+
#------------------------------------------------------
28+
include $(CLEAR_VARS)
29+
LOCAL_MODULE := libpaho-mqtt-c
30+
LOCAL_STATIC_LIBRARIES := paho-mqtt3a paho-mqtt3c
31+
LOCAL_EXPORT_C_INCLUDES := $(PAHO_MQTT_C_INCLUDES)
32+
include $(BUILD_STATIC_LIBRARY)

java/android/nnstreamer/src/main/jni/Android-snap-prebuilt.mk

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,16 @@
44
# This mk file defines prebuilt libraries for snap module.
55
# (snap-sdk, arm64-v8a only)
66
#------------------------------------------------------
7-
LOCAL_PATH := $(call my-dir)
8-
97
ifndef SNAP_LIB_PATH
108
$(error SNAP_LIB_PATH is not defined!)
119
endif
1210

13-
SNAP_PREBUILT_LIBS :=
14-
1511
#------------------------------------------------------
1612
# snap-sdk (prebuilt shared library)
1713
#------------------------------------------------------
1814
include $(CLEAR_VARS)
1915
LOCAL_MODULE := snap-sdk
2016
LOCAL_SRC_FILES := $(SNAP_LIB_PATH)/libsnap_vndk.so
2117
include $(PREBUILT_SHARED_LIBRARY)
22-
SNAP_PREBUILT_LIBS += snap-sdk
18+
19+
SNAP_PREBUILT_LIBS := snap-sdk

0 commit comments

Comments
 (0)