From 386a332b4f70718cccb08d5511d66e9f4f5bd409 Mon Sep 17 00:00:00 2001 From: Dan Egnor Date: Thu, 6 May 2010 00:55:09 -0700 Subject: [PATCH 1/2] Make static versions of libutils and libbinder. Fix some small static-initialization-order issues (and a static- initializers-missing issue) that result from doing so. The static libraries don't actually get used for anything real at the moment -- they're used for perf tests of bug 2660235. Bug: 2660235 Change-Id: Iee2f38f79cc93b395e8d0a5a144ed92461f5ada0 --- include/binder/Binder.h | 1 - libs/binder/Android.mk | 49 +++++++++++++++++++++-------------------- libs/binder/Binder.cpp | 5 +++-- libs/utils/Android.mk | 10 +++++++++ libs/utils/String8.cpp | 9 ++++---- 5 files changed, 43 insertions(+), 31 deletions(-) diff --git a/include/binder/Binder.h b/include/binder/Binder.h index 47b2bb9b2..ba3ac4b99 100644 --- a/include/binder/Binder.h +++ b/include/binder/Binder.h @@ -71,7 +71,6 @@ private: Extras* mExtras; void* mReserved0; - static String16 sEmptyDescriptor; }; // --------------------------------------------------------------------------- diff --git a/libs/binder/Android.mk b/libs/binder/Android.mk index 2df677520..13dc500d9 100644 --- a/libs/binder/Android.mk +++ b/libs/binder/Android.mk @@ -12,34 +12,35 @@ # See the License for the specific language governing permissions and # limitations under the License. -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - # we have the common sources, plus some device-specific stuff -LOCAL_SRC_FILES:= \ - Binder.cpp \ - BpBinder.cpp \ - IInterface.cpp \ - IMemory.cpp \ - IPCThreadState.cpp \ - IPermissionController.cpp \ - IServiceManager.cpp \ - MemoryDealer.cpp \ +sources := \ + Binder.cpp \ + BpBinder.cpp \ + IInterface.cpp \ + IMemory.cpp \ + IPCThreadState.cpp \ + IPermissionController.cpp \ + IServiceManager.cpp \ + MemoryDealer.cpp \ MemoryBase.cpp \ MemoryHeapBase.cpp \ MemoryHeapPmem.cpp \ - Parcel.cpp \ - Permission.cpp \ - ProcessState.cpp \ - Static.cpp + Parcel.cpp \ + Permission.cpp \ + ProcessState.cpp \ + Static.cpp +LOCAL_PATH:= $(call my-dir) + +include $(CLEAR_VARS) LOCAL_LDLIBS += -lpthread - -LOCAL_SHARED_LIBRARIES := \ - liblog \ - libcutils \ - libutils - -LOCAL_MODULE:= libbinder - +LOCAL_MODULE := libbinder +LOCAL_SHARED_LIBRARIES := liblog libcutils libutils +LOCAL_SRC_FILES := $(sources) include $(BUILD_SHARED_LIBRARY) + +include $(CLEAR_VARS) +LOCAL_LDLIBS += -lpthread +LOCAL_MODULE := libbinder +LOCAL_SRC_FILES := $(sources) +include $(BUILD_STATIC_LIBRARY) diff --git a/libs/binder/Binder.cpp b/libs/binder/Binder.cpp index 0dd762212..9945f9188 100644 --- a/libs/binder/Binder.cpp +++ b/libs/binder/Binder.cpp @@ -69,8 +69,6 @@ public: // --------------------------------------------------------------------------- -String16 BBinder::sEmptyDescriptor; - BBinder::BBinder() : mExtras(NULL) { @@ -88,6 +86,9 @@ status_t BBinder::pingBinder() const String16& BBinder::getInterfaceDescriptor() const { + // This is a local static rather than a global static, + // to avoid static initializer ordering issues. + static String16 sEmptyDescriptor; LOGW("reached BBinder::getInterfaceDescriptor (this=%p)", this); return sEmptyDescriptor; } 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(); From 869aba8aaf3ac7a0fedce6ce3bc9ce9172742766 Mon Sep 17 00:00:00 2001 From: Dan Morrill Date: Thu, 6 May 2010 14:15:47 -0700 Subject: [PATCH 2/2] Adding PacketVideo attribution in NOTICE. Change-Id: Id2fe398d4deed6ebd8cba8516ffc6c0334a961b0 --- NOTICE | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/NOTICE b/NOTICE index bb9c5f269..20062013e 100644 --- a/NOTICE +++ b/NOTICE @@ -41,6 +41,16 @@ The Apache Software Foundation (http://www.apache.org/). ========================================================================= These files are Copyright 2007 Nuance Communications, but released under +the Apache2 License. + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Media Codecs code. == + ========================================================================= + +Media Codecs +These files are Copyright 1998 - 2009 PacketVideo, but released under the Apache2 License. Apache License