diff --git a/libs/utils/Android.mk b/libs/utils/Android.mk index d0eedb43a..afecdcb0c 100644 --- a/libs/utils/Android.mk +++ b/libs/utils/Android.mk @@ -104,3 +104,13 @@ endif # sim LOCAL_MODULE:= libutils include $(BUILD_SHARED_LIBRARY) +ifneq ($(TARGET_SIMULATOR),true) +ifeq ($(TARGET_OS),linux) +include $(CLEAR_VARS) +LOCAL_C_INCLUDES += external/zlib external/icu4c/common +LOCAL_LDLIBS := -lrt -ldl -lpthread +LOCAL_MODULE := libutils +LOCAL_SRC_FILES := $(commonSources) BackupData.cpp BackupHelpers.cpp +include $(BUILD_STATIC_LIBRARY) +endif +endif diff --git a/libs/utils/String8.cpp b/libs/utils/String8.cpp index 3a3483871..636cd8342 100644 --- a/libs/utils/String8.cpp +++ b/libs/utils/String8.cpp @@ -136,10 +136,11 @@ static inline char* getEmptyString() void initialize_string8() { -#ifdef LIBUTILS_NATIVE - // Bite me, Darwin! - gDarwinIsReallyAnnoying = gDarwinCantLoadAllObjects; -#endif + // HACK: This dummy dependency forces linking libutils Static.cpp, + // which is needed to initialize String8/String16 classes. + // These variables are named for Darwin, but are needed elsewhere too, + // including static linking on any platform. + gDarwinIsReallyAnnoying = gDarwinCantLoadAllObjects; SharedBuffer* buf = SharedBuffer::alloc(1); char* str = (char*)buf->data();