From e3e67a821248b85c51e8dba9222dd2dffa31e73e Mon Sep 17 00:00:00 2001 From: David Gross Date: Thu, 27 Feb 2020 15:11:36 -0800 Subject: [PATCH 1/3] Move lld (darwin, linux) and add dependent libraries darwin: Move lld to lld-bin directory; add lib64/libc++.1.dylib; add trampoline linux: Move lld to lld-bin directory; add lib64/libc++.so.1; add trampoline Best practice is to ship necessary libraries of expected versions along with build tools, rather than requiring them to be found elsewhere. lld depends on libc++.1.dylib (darwin) or libc++.so.1 (linux) and looks for it in ../lib64, so we need to move lld to an appropriate relative location. In the old location of lld, we add a simple bash trampoline to invoke lld in lld-bin; this means Gradle, which invokes lld in the old location, does not have to change. Bug: 148267171 Bug: 142590626 Bug: 144040336 Test: (gLinux) m TARGET_PRODUCT=sdk_phone_armv7 TARGET_BUILD_VARIANT=userdebug sdk dist sdk_repo (gLinux) m TARGET_PRODUCT=sdk_phone_armv7 TARGET_BUILD_VARIANT=userdebug win_sdk dist sdk_repo Merged-In: I69b4ef79208bd7d06a377c0761671f1b572abced Change-Id: I69b4ef79208bd7d06a377c0761671f1b572abced (cherry picked from commit e9351e5061e2a9d2dfe92fb78731dbd0eada371e) --- build/sdk-darwin-x86.atree | 4 +++- build/sdk-linux-x86.atree | 4 +++- build/sdk-windows-x86.atree | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/build/sdk-darwin-x86.atree b/build/sdk-darwin-x86.atree index 045017dcb..b278c1043 100644 --- a/build/sdk-darwin-x86.atree +++ b/build/sdk-darwin-x86.atree @@ -41,7 +41,9 @@ prebuilts/sdk/tools/darwin/bin/i686-linux-android-ld strip build-tools/${PL prebuilts/sdk/tools/darwin/bin/x86_64-linux-android-ld strip build-tools/${PLATFORM_NAME}/x86_64-linux-android-ld prebuilts/sdk/tools/darwin/bin/mipsel-linux-android-ld strip build-tools/${PLATFORM_NAME}/mipsel-linux-android-ld -prebuilts/sdk/tools/darwin/bin/lld strip build-tools/${PLATFORM_NAME}/lld +prebuilts/sdk/tools/lld build-tools/${PLATFORM_NAME}/lld +prebuilts/sdk/tools/darwin/bin/lld strip build-tools/${PLATFORM_NAME}/lld-bin/lld +prebuilts/sdk/tools/darwin/lib64/libc++.1.dylib strip build-tools/${PLATFORM_NAME}/lib64/libc++.1.dylib dalvik/dx/etc/mainDexClasses build-tools/${PLATFORM_NAME}/mainDexClasses diff --git a/build/sdk-linux-x86.atree b/build/sdk-linux-x86.atree index 0cd29deac..c4b1e4863 100644 --- a/build/sdk-linux-x86.atree +++ b/build/sdk-linux-x86.atree @@ -41,6 +41,8 @@ prebuilts/sdk/tools/linux/bin/i686-linux-android-ld strip build-tools/${PLA prebuilts/sdk/tools/linux/bin/x86_64-linux-android-ld strip build-tools/${PLATFORM_NAME}/x86_64-linux-android-ld prebuilts/sdk/tools/linux/bin/mipsel-linux-android-ld strip build-tools/${PLATFORM_NAME}/mipsel-linux-android-ld -prebuilts/sdk/tools/linux/bin/lld strip build-tools/${PLATFORM_NAME}/lld +prebuilts/sdk/tools/lld build-tools/${PLATFORM_NAME}/lld +prebuilts/sdk/tools/linux/bin/lld strip build-tools/${PLATFORM_NAME}/lld-bin/lld +prebuilts/sdk/tools/linux/lib64/libc++.so.1 strip build-tools/${PLATFORM_NAME}/lib64/libc++.so.1 dalvik/dx/etc/mainDexClasses build-tools/${PLATFORM_NAME}/mainDexClasses diff --git a/build/sdk-windows-x86.atree b/build/sdk-windows-x86.atree index 80af7efa0..4726aee66 100644 --- a/build/sdk-windows-x86.atree +++ b/build/sdk-windows-x86.atree @@ -138,7 +138,10 @@ prebuilts/sdk/tools/windows/bin/x86_64-linux-android-ld.exe strip build-too rm build-tools/${PLATFORM_NAME}/mipsel-linux-android-ld prebuilts/sdk/tools/windows/bin/mipsel-linux-android-ld.exe strip build-tools/${PLATFORM_NAME}/mipsel-linux-android-ld.exe +rm build-tools/${PLATFORM_NAME}/lib64/libc++.so.1 + rm build-tools/${PLATFORM_NAME}/lld +rm build-tools/${PLATFORM_NAME}/lld-bin/lld prebuilts/sdk/tools/windows/bin/lld.exe strip build-tools/${PLATFORM_NAME}/lld.exe dalvik/dx/etc/mainDexClasses.bat build-tools/${PLATFORM_NAME}/mainDexClasses.bat From 7fe8024a200a922ba9e6d3a2754685493c20142c Mon Sep 17 00:00:00 2001 From: David Gross Date: Mon, 2 Mar 2020 17:40:16 -0800 Subject: [PATCH 2/3] Move lld.exe (windows) and add dependent library libwinpthread-1.dll Move lld.exe to lld-bin directory; add lld-bin/libwinpthread-1.dll; add trampoline. Best practice is to ship necessary libraries of expected versions along with build tools, rather than requiring them to be found elsewhere. lld.exe depends on libwinpthread-1.dll and windows looks for it in the same directory as lld.exe. Unfortunately, there's already a 32-bit libwinpthread-1.dll at the tool root (used by 32-bit executables at the tool root), and lld.exe is a 64-bit executable, so it needs its own directory and its own library. In the old location of lld.exe, we add a trampoline executable (a build artifact) in lld-bin; this means Gradle, which invokes lld.exe in the old location, does not have to change. Bug: 148267171 Bug: 142590626 Bug: 144040336 Test: (gLinux) m TARGET_PRODUCT=sdk_phone_armv7 TARGET_BUILD_VARIANT=userdebug sdk dist sdk_repo (gLinux) m TARGET_PRODUCT=sdk_phone_armv7 TARGET_BUILD_VARIANT=userdebug win_sdk dist sdk_repo Merged-In: Ice6710ed204a25d09ac596207c02b8b99ca95b8b Change-Id: Ice6710ed204a25d09ac596207c02b8b99ca95b8b (cherry picked from commit 24e52959d723c2b47acc170b0d2784379a6e99c2) --- build/sdk-windows-x86.atree | 8 +++++++- build/tools/windows_sdk.mk | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/build/sdk-windows-x86.atree b/build/sdk-windows-x86.atree index 4726aee66..f83122ac7 100644 --- a/build/sdk-windows-x86.atree +++ b/build/sdk-windows-x86.atree @@ -142,7 +142,13 @@ rm build-tools/${PLATFORM_NAME}/lib64/libc++.so.1 rm build-tools/${PLATFORM_NAME}/lld rm build-tools/${PLATFORM_NAME}/lld-bin/lld -prebuilts/sdk/tools/windows/bin/lld.exe strip build-tools/${PLATFORM_NAME}/lld.exe + +# lld linker trampoline (invokes actual lld linker at lld-bin/lld.exe) +bin/lld.exe strip build-tools/${PLATFORM_NAME}/lld.exe + +# actual lld linker, and dependent library +prebuilts/sdk/tools/windows/bin/lld.exe strip build-tools/${PLATFORM_NAME}/lld-bin/lld.exe +prebuilts/sdk/tools/windows/bin/lib64/libwinpthread-1.dll strip build-tools/${PLATFORM_NAME}/lld-bin/libwinpthread-1.dll dalvik/dx/etc/mainDexClasses.bat build-tools/${PLATFORM_NAME}/mainDexClasses.bat diff --git a/build/tools/windows_sdk.mk b/build/tools/windows_sdk.mk index afe21c94c..d510851a4 100644 --- a/build/tools/windows_sdk.mk +++ b/build/tools/windows_sdk.mk @@ -35,6 +35,7 @@ WIN_TARGETS := \ fastboot \ hprof-conv \ libaapt2_jni \ + lld \ llvm-rs-cc \ sqlite3 \ zipalign \ From 6f16baeea9c58223d5ea29a9e1c8468abf172904 Mon Sep 17 00:00:00 2001 From: David Gross Date: Wed, 11 Mar 2020 15:25:20 -0700 Subject: [PATCH 3/3] For darwin, add lib64/libc++abi.1.dylib. libc++.1.dylib, which was already added, depends on this. Bug: 148267171 Bug: 142590626 Bug: 144040336 Test: N/A Merged-In: Ifd5b2db7b18a29c1b58b408118951792733649b7 Change-Id: Ifd5b2db7b18a29c1b58b408118951792733649b7 (cherry picked from commit f879b7a53cc6546e7af885e19bf49b2a15e55489) --- build/sdk-darwin-x86.atree | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/build/sdk-darwin-x86.atree b/build/sdk-darwin-x86.atree index b278c1043..67645bd58 100644 --- a/build/sdk-darwin-x86.atree +++ b/build/sdk-darwin-x86.atree @@ -41,9 +41,10 @@ prebuilts/sdk/tools/darwin/bin/i686-linux-android-ld strip build-tools/${PL prebuilts/sdk/tools/darwin/bin/x86_64-linux-android-ld strip build-tools/${PLATFORM_NAME}/x86_64-linux-android-ld prebuilts/sdk/tools/darwin/bin/mipsel-linux-android-ld strip build-tools/${PLATFORM_NAME}/mipsel-linux-android-ld -prebuilts/sdk/tools/lld build-tools/${PLATFORM_NAME}/lld -prebuilts/sdk/tools/darwin/bin/lld strip build-tools/${PLATFORM_NAME}/lld-bin/lld -prebuilts/sdk/tools/darwin/lib64/libc++.1.dylib strip build-tools/${PLATFORM_NAME}/lib64/libc++.1.dylib +prebuilts/sdk/tools/lld build-tools/${PLATFORM_NAME}/lld +prebuilts/sdk/tools/darwin/bin/lld strip build-tools/${PLATFORM_NAME}/lld-bin/lld +prebuilts/sdk/tools/darwin/lib64/libc++.1.dylib strip build-tools/${PLATFORM_NAME}/lib64/libc++.1.dylib +prebuilts/sdk/tools/darwin/lib64/libc++abi.1.dylib strip build-tools/${PLATFORM_NAME}/lib64/libc++abi.1.dylib dalvik/dx/etc/mainDexClasses build-tools/${PLATFORM_NAME}/mainDexClasses