From f68d6af83f8f99714c139d867e8328f558480f28 Mon Sep 17 00:00:00 2001 From: David 'Digit' Turner Date: Fri, 9 Jul 2010 09:56:31 -0700 Subject: [PATCH] ndk: Add a test to check that prebuilt libraries work as expected. Change-Id: I7c0683ac1ee50bb62cc0f7ac22e839f749ec1cdf --- ndk/tests/prebuilt-library/jni/Android.mk | 31 ++++++++++++++++++++++++++++++ ndk/tests/prebuilt-library/jni/foo-user.c | 6 ++++++ ndk/tests/prebuilt-library/jni/foo/foo.c | 6 ++++++ ndk/tests/prebuilt-library/jni/foo/foo.h | 6 ++++++ ndk/tests/prebuilt-library/jni/libfoo.so | Bin 0 -> 32861 bytes 5 files changed, 49 insertions(+) create mode 100644 ndk/tests/prebuilt-library/jni/Android.mk create mode 100644 ndk/tests/prebuilt-library/jni/foo-user.c create mode 100644 ndk/tests/prebuilt-library/jni/foo/foo.c create mode 100644 ndk/tests/prebuilt-library/jni/foo/foo.h create mode 100755 ndk/tests/prebuilt-library/jni/libfoo.so diff --git a/ndk/tests/prebuilt-library/jni/Android.mk b/ndk/tests/prebuilt-library/jni/Android.mk new file mode 100644 index 00000000..88a7dd34 --- /dev/null +++ b/ndk/tests/prebuilt-library/jni/Android.mk @@ -0,0 +1,31 @@ +LOCAL_PATH := $(call my-dir) + +# Define BUILD_FOO=1 to rebuild libfoo.so from scratch, then +# copy obj/local/armeabi/libfoo.so to jni/libfoo.so +# +ifneq ($(BUILD_FOO),) + +include $(CLEAR_VARS) +LOCAL_MODULE := foo +LOCAL_SRC_FILES := foo/foo.c +LOCAL_C_INCLUDES := $(LOCAL_PATH)/foo +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/foo +include $(BUILD_SHARED_LIBRARY) + +else # not build libfoo.so, trying to use PREBUILT_SHARED_LIBRARY instead. + +# Note: the module is named foo-prebuilt, but the library is libfool.so ! +# +include $(CLEAR_VARS) +LOCAL_MODULE := foo-prebuilt +LOCAL_SRC_FILES := $(LOCAL_PATH)/libfoo.so +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/foo +include $(PREBUILT_SHARED_LIBRARY) + +include $(CLEAR_VARS) +LOCAL_MODULE := foo-user +LOCAL_SRC_FILES := foo-user.c +LOCAL_PREBUILTS := foo-prebuilt +include $(BUILD_SHARED_LIBRARY) + +endif diff --git a/ndk/tests/prebuilt-library/jni/foo-user.c b/ndk/tests/prebuilt-library/jni/foo-user.c new file mode 100644 index 00000000..acc453e5 --- /dev/null +++ b/ndk/tests/prebuilt-library/jni/foo-user.c @@ -0,0 +1,6 @@ +#include "foo.h" + +int main(void) +{ + return foo(); +} diff --git a/ndk/tests/prebuilt-library/jni/foo/foo.c b/ndk/tests/prebuilt-library/jni/foo/foo.c new file mode 100644 index 00000000..a4758ada --- /dev/null +++ b/ndk/tests/prebuilt-library/jni/foo/foo.c @@ -0,0 +1,6 @@ +#include "foo.h" + +int foo(void) +{ + return 42; +} diff --git a/ndk/tests/prebuilt-library/jni/foo/foo.h b/ndk/tests/prebuilt-library/jni/foo/foo.h new file mode 100644 index 00000000..5b5c8f23 --- /dev/null +++ b/ndk/tests/prebuilt-library/jni/foo/foo.h @@ -0,0 +1,6 @@ +#ifndef FOO_FOO_H +#define FOO_FOO_H + +extern int foo(void); + +#endif /* FOO_FOO_H */ diff --git a/ndk/tests/prebuilt-library/jni/libfoo.so b/ndk/tests/prebuilt-library/jni/libfoo.so new file mode 100755 index 0000000000000000000000000000000000000000..d5c7c3766247c634160d873e6b27268ebecb2b9e GIT binary patch literal 32861 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 qwfSY0o~W+*q>iex0TL|PluQ=iRu>S)A?~scC literal 0 HcmV?d00001 -- 2.11.0