Prebuild of static library not executed.

Started by
0 comments, last by freakchild 10 years, 11 months ago

I've implemented a simple static test library foo and perform a successfully build of this library. Now I try to include this library as static prebuild to my simple shared bar library, based on android documentation. But this fails. My shared library is build successfully but my prebuild is not executed (finally not copied).

Here ist my bar Android.mk file


LOCAL_PATH := D:/binrev/repository/bar
include $(CLEAR_VARS)

LOCAL_MODULE    := foo-prebuilt
LOCAL_SRC_FILES := external-deps/foo/lib/android/$(TARGET_ARCH_ABI)/libfoo.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)           
LOCAL_MODULE    := bar
LOCAL_C_INCLUDES:= D:/binrev/repository/bar/include
LOCAL_C_INCLUDES+= D:/binrev/repository/bar/external-deps/foo/include
LOCAL_SRC_FILES := src/bar.cpp

LOCAL_LDLIBS := -llog
LOCAL_LDLIBS += -landroid 
 
LOCAL_SHARED_LIBRARIES := foo-prebuilt
include $(BUILD_SHARED_LIBRARY)

And here is my Application.mk file:


APP_PROJECT_PATH := D:/binrev/repository/bar
APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/Android.mk 

APP_CPPFLAGS := -std=gnu++0x  
APP_CPPFLAGS += -frtti
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -DDEBUG  

APP_STL := gnustl_static
APP_GNUSTL_CPP_FEATURES := rtti exceptions
APP_OPTIM := debug

APP_ABI := armeabi-v7a
APP_PLATFORM:=android-10          
APP_MODULES := bar

I use MinGW64 in hanshake with NDK 8re. I could exclude MinGW64 as possible source of defects, while this failure also occurs, if I perform the build using Windows command line. While the upload is blocked by our proxy you could download the test project here:

http://sourceforge.net/projects/binrevengine/files/publications//bar.7z

I checked my sources and scripts multiple times, but can't find any failure.

I completly get lost and running out of ideas ...
Thanks for any help.

Advertisement

This is about a year old and I haven't used it in a while (so the NDK may have changed to the point where this could be a little out of date) but this is how I built a shared library that also includes prebuilt static one.


LOCAL_STATIC_LIBRARIES := nameofprebuiltstaticlibrary
...
include $(BUILD_SHARED_LIBRARY)
...
$(call import-module,nameofprebuiltstaticlibrary)
 

But for some source includes (and some commented out lines which I'll cover below) these are the only locations in my Android.mk that specifically mention the library I'm trying to include.

You look to include your pre-built static as a shared:


LOCAL_SHARED_LIBRARIES := foo-prebuilt
 

...and I'm not sure what the result of that would be but it looks a little dodgy given it's a static.

Before the above, this is what I used to do.


include $(CLEAR_VARS)
LOCAL_MODULE := library_pre
LOCAL_PATH := $(TARGET_OUT)
LOCAL_PATH := $(EORBRANCH_FS)/obj/prebuilt/$(TARGET_ARCH_ABI)
LOCAL_MODULE_FILENAME := libprebuit
LOCAL_SRC_FILES := libprebuilt.a
include $(PREBUILT_STATIC_LIBRARY)

$(call import-module,prebuilt) 

I list that because I note you have something similar too. In my case, this is how it was and it is now commented out and I rely on the first code box above. I mention it because for me to not be using this/this being my old method - you may be mixing two methods. The google make files offer more than one way to cook the egg and as I recall mixing them is easy to do.

I would post my files but once upon a time another engineer hacked them up to customize. Not sure exactly what they had in mind here because it was working well already and they eventually stopped trying as they realized the google system worked well enough. In the process they really messed up the clarity on offer though (it was once much clearer from just looking at the file), hence why it's best for me to post the intact snippets and the commented parts.

This topic is closed to new replies.

Advertisement