Unable to create a standalone static library that includes others static libraries.

81 views
Skip to first unread message

Jean-Philippe Déry

unread,
Mar 15, 2015, 7:35:22 PM3/15/15
to andro...@googlegroups.com
Hi,

I'm currently trying to create a static library that includes all the static libraries used within (so other projets only requires one file). The existing static libraries I'm trying to combine are V8's v8_base v8_libbase v8_nosnapshot v8_libplatform. All these static libraries weight about 20 MB however the .a file created from ndk-build is about 1.1 Mb, plus when I try to use it I get a bunch of undefined reference error to V8's code.

Here's my Application.mk file

APP_ABI := armeabi-v7a armeabi x86
APP_STL
:= stlport_shared
APP_PLATFORM
:= android-15
APP_MODULES
:= MetisCore v8_base v8_libbase v8_nosnapshot v8_libplatform

Here's my Android.mk file

LOCAL_PATH := $(call my-dir)


#---------------------------------------------------------------------------------------------------
# v8_libplatform
#---------------------------------------------------------------------------------------------------


include $
(CLEAR_VARS)
LOCAL_MODULE
:= v8_libplatform


ifeq
($(TARGET_ARCH_ABI), armeabi)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_arm.release/libv8_libplatform.a
endif


ifeq
($(TARGET_ARCH_ABI), armeabi-v7a)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_arm.release/libv8_libplatform.a
endif


ifeq
($(TARGET_ARCH_ABI), x86)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_ia32.release/libv8_libplatform.a
endif


include $
(PREBUILT_STATIC_LIBRARY)


#---------------------------------------------------------------------------------------------------
# v8_libbase
#---------------------------------------------------------------------------------------------------


include $
(CLEAR_VARS)
LOCAL_MODULE
:= v8_libbase


ifeq
($(TARGET_ARCH_ABI), armeabi)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_arm.release/libv8_libbase.a
endif


ifeq
($(TARGET_ARCH_ABI), armeabi-v7a)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_arm.release/libv8_libbase.a
endif


ifeq
($(TARGET_ARCH_ABI), x86)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_ia32.release/libv8_libbase.a
endif


include $
(PREBUILT_STATIC_LIBRARY)


#---------------------------------------------------------------------------------------------------
# libv8_base
#---------------------------------------------------------------------------------------------------


include $
(CLEAR_VARS)
LOCAL_MODULE
:= v8_base


ifeq
($(TARGET_ARCH_ABI), armeabi)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_arm.release/libv8_base.a
endif


ifeq
($(TARGET_ARCH_ABI), armeabi-v7a)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_arm.release/libv8_base.a
endif


ifeq
($(TARGET_ARCH_ABI), x86)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_ia32.release/libv8_base.a
endif


include $
(PREBUILT_STATIC_LIBRARY)


#---------------------------------------------------------------------------------------------------
# libv8_nosnapshot
#---------------------------------------------------------------------------------------------------


include $
(CLEAR_VARS)
LOCAL_MODULE
:= v8_nosnapshot


ifeq
($(TARGET_ARCH_ABI), armeabi)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_arm.release/libv8_nosnapshot.a
endif


ifeq
($(TARGET_ARCH_ABI), armeabi-v7a)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_arm.release/libv8_nosnapshot.a
endif


ifeq
($(TARGET_ARCH_ABI), x86)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_ia32.release/libv8_nosnapshot.a
endif


include $
(PREBUILT_STATIC_LIBRARY)


#---------------------------------------------------------------------------------------------------
# v8_snapshot
#---------------------------------------------------------------------------------------------------


include $
(CLEAR_VARS)
LOCAL_MODULE
:= v8_snapshot


ifeq
($(TARGET_ARCH_ABI), armeabi)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_arm.release/libv8_snapshot.a
endif


ifeq
($(TARGET_ARCH_ABI), armeabi-v7a)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_arm.release/libv8_snapshot.a
endif


ifeq
($(TARGET_ARCH_ABI), x86)
  LOCAL_SRC_FILES
:= ../../../vendors/v8-3.29/libs/android_ia32.release/libv8_snapshot.a
endif


include $
(PREBUILT_STATIC_LIBRARY)


#---------------------------------------------------------------------------------------------------
# MetisCore
#---------------------------------------------------------------------------------------------------


include $
(CLEAR_VARS)


LOCAL_MODULE    
:= MetisCore
LOCAL_SRC_FILES
:= \
 
MJScopeRef.cpp \
 
MJScopeRefPrivate.cpp \
 
MJHandleRef.cpp \
 
MJHandleRefPrivate.cpp \
 
MJDelegateRef.cpp \
 
MJDelegateRefPrivate.cpp \
  $
(wildcard $(LOCAL_PATH)/../../../vendors/v8-3.29/src/*.cpp)


LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../vendors/v8-3.29/include
LOCAL_CFLAGS += -Wl, -lrt -pthread
LOCAL_WHOLE_STATIC_LIBRARIES :=  v8_base v8_libbase v8_nosnapshot v8_libplatform
include $(BUILD_STATIC_LIBRARY)

I had a lot of hope LOCAL_WHOLE_STATIC_LIBRARIES would do what I'm trying to do but apparently it didn't change anything.

I'm really wondering what's missing. Any help or pointer to the right direction is really appreciated.

Thanks

Reply all
Reply to author
Forward
0 new messages