diff options
-rw-r--r-- | include/binder/Binder.h | 1 | ||||
-rw-r--r-- | libs/binder/Android.mk | 49 | ||||
-rw-r--r-- | libs/binder/Binder.cpp | 5 | ||||
-rw-r--r-- | libs/utils/Android.mk | 10 | ||||
-rw-r--r-- | 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 47b2bb9..ba3ac4b 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 2df6775..13dc500 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 - -LOCAL_LDLIBS += -lpthread - -LOCAL_SHARED_LIBRARIES := \ - liblog \ - libcutils \ - libutils + Parcel.cpp \ + Permission.cpp \ + ProcessState.cpp \ + Static.cpp -LOCAL_MODULE:= libbinder +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) +LOCAL_LDLIBS += -lpthread +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 0dd7622..9945f91 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 d0eedb4..afecdcb 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 3a34838..636cd83 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(); |