From 7130fabd20530f4809320e38a994f1aba2d39ad7 Mon Sep 17 00:00:00 2001 From: Martin Stjernholm Date: Thu, 28 May 2020 22:58:01 +0100 Subject: Propagate flags necessary for a prebuilt of the Bionic linker. The flags are necessary to avoid implicit dependencies on crt libs, libc, and the linker (recursively). The reason cc_prebuilt_binary react to these flags is that they can affect the install rules. Test: m nothing Test: art/test/testrunner/run_build_test_target.py art-linux-bionic-x64 on a master-art branch using snapshot built from runtime-module-sdk and runtime-module-host-exports Bug: 152255951 Change-Id: I6b2fe92d105d1f446fffd00bd3267a416f75efb7 --- sdk/cc_sdk_test.go | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) (limited to 'sdk/cc_sdk_test.go') diff --git a/sdk/cc_sdk_test.go b/sdk/cc_sdk_test.go index dded15360..4a090814d 100644 --- a/sdk/cc_sdk_test.go +++ b/sdk/cc_sdk_test.go @@ -401,7 +401,6 @@ func TestSnapshotWithCcBinary(t *testing.T) { "Test.cpp", ], compile_multilib: "both", - stl: "none", } `) @@ -494,6 +493,7 @@ cc_prebuilt_binary { device_supported: false, host_supported: true, installable: false, + stl: "none", target: { linux_glibc: { compile_multilib: "both", @@ -518,6 +518,7 @@ cc_prebuilt_binary { prefer: false, device_supported: false, host_supported: true, + stl: "none", target: { linux_glibc: { compile_multilib: "both", @@ -557,6 +558,90 @@ module_exports_snapshot { ) } +// Test that we support the necessary flags for the linker binary, which is +// special in several ways. +func TestSnapshotWithCcStaticNocrtBinary(t *testing.T) { + // b/145598135 - Generating host snapshots for anything other than linux is not supported. + SkipIfNotLinux(t) + + result := testSdkWithCc(t, ` + module_exports { + name: "mymodule_exports", + host_supported: true, + device_supported: false, + native_binaries: ["linker"], + } + + cc_binary { + name: "linker", + host_supported: true, + static_executable: true, + nocrt: true, + stl: "none", + srcs: [ + "Test.cpp", + ], + compile_multilib: "both", + } + `) + + result.CheckSnapshot("mymodule_exports", "", + checkAndroidBpContents(` +// This is auto-generated. DO NOT EDIT. + +cc_prebuilt_binary { + name: "mymodule_exports_linker@current", + sdk_member_name: "linker", + device_supported: false, + host_supported: true, + installable: false, + stl: "none", + static_executable: true, + nocrt: true, + compile_multilib: "both", + arch: { + x86_64: { + srcs: ["x86_64/bin/linker"], + }, + x86: { + srcs: ["x86/bin/linker"], + }, + }, +} + +cc_prebuilt_binary { + name: "linker", + prefer: false, + device_supported: false, + host_supported: true, + stl: "none", + static_executable: true, + nocrt: true, + compile_multilib: "both", + arch: { + x86_64: { + srcs: ["x86_64/bin/linker"], + }, + x86: { + srcs: ["x86/bin/linker"], + }, + }, +} + +module_exports_snapshot { + name: "mymodule_exports@current", + device_supported: false, + host_supported: true, + native_binaries: ["mymodule_exports_linker@current"], +} +`), + checkAllCopyRules(` +.intermediates/linker/linux_glibc_x86_64/linker -> x86_64/bin/linker +.intermediates/linker/linux_glibc_x86/linker -> x86/bin/linker +`), + ) +} + func TestSnapshotWithCcSharedLibrary(t *testing.T) { result := testSdkWithCc(t, ` sdk { -- cgit v1.2.3-59-g8ed1b