From 4d9268e704b3936b913069258a9a3a5f77d92ba2 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Thu, 23 Feb 2017 13:17:46 -0800 Subject: [PATCH] Statically link libwinpthread into windows binaries. Statically link libwinpthread.a, so that we don't have to ship a libwinpthread dll with all of our windows exectuables. Bug: http://b/31665213 Test: wine adb.exe Test: wine fastboot.exe Change-Id: I96414e980d8894f8f6a58c1c7bbd9dc5e0f5169c --- core/Makefile | 10 ++++++++- core/WINPTHREADS_COPYING | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ core/binary.mk | 5 +++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 core/WINPTHREADS_COPYING diff --git a/core/Makefile b/core/Makefile index db1f8731d..169def84a 100644 --- a/core/Makefile +++ b/core/Makefile @@ -693,6 +693,7 @@ tools_notice_file_html := $(HOST_OUT_INTERMEDIATES)/NOTICE.html ifndef TARGET_BUILD_APPS kernel_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/kernel.txt +winpthreads_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/winpthreads.txt pdk_fusion_notice_files := $(filter $(TARGET_OUT_NOTICE_FILES)/%, $(ALL_PDK_FUSION_FILES)) $(eval $(call combine-notice-files, \ @@ -707,7 +708,8 @@ $(eval $(call combine-notice-files, \ $(tools_notice_file_html), \ "Notices for files contained in the tools directory:", \ $(HOST_OUT_NOTICE_FILES), \ - $(ALL_DEFAULT_INSTALLED_MODULES))) + $(ALL_DEFAULT_INSTALLED_MODULES) \ + $(winpthreads_notice_file))) # Install the html file at /system/etc/NOTICE.html.gz. # This is not ideal, but this is very late in the game, after a lot of @@ -736,6 +738,12 @@ $(kernel_notice_file): \ $(hide) mkdir -p $(dir $@) $(hide) $(ACP) $< $@ +$(winpthreads_notice_file): \ + $(BUILD_SYSTEM)/WINPTHREADS_COPYING \ + | $(ACP) + @echo Copying: $@ + $(hide) mkdir -p $(dir $@) + $(hide) $(ACP) $< $@ # ----------------------------------------------------------------- # Build a keystore with the authorized keys in it, used to verify the diff --git a/core/WINPTHREADS_COPYING b/core/WINPTHREADS_COPYING new file mode 100644 index 000000000..350770123 --- /dev/null +++ b/core/WINPTHREADS_COPYING @@ -0,0 +1,57 @@ +Copyright (c) 2011 mingw-w64 project + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + +/* + * Parts of this library are derived by: + * + * Posix Threads library for Microsoft Windows + * + * Use at own risk, there is no implied warranty to this code. + * It uses undocumented features of Microsoft Windows that can change + * at any time in the future. + * + * (C) 2010 Lockless Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of Lockless Inc. nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AN + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/core/binary.mk b/core/binary.mk index 44f0e9546..f5d9bfcc1 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -473,6 +473,11 @@ ifeq (,$(WITHOUT_LIBCOMPILER_RT)) endif endif +# Statically link libwinpthread when cross compiling win32. +ifeq ($($(my_prefix)OS),windows) + my_static_libraries += libwinpthread +endif + ifneq ($(filter ../%,$(my_src_files)),) my_soong_problems += dotdot_srcs endif -- 2.11.0