2019-12-03 16:25:00 +01:00
// Copyright (C) 2019 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package sdk
import (
2021-09-06 11:28:34 +02:00
"fmt"
2019-12-03 16:25:00 +01:00
"testing"
2020-02-25 20:26:33 +01:00
"android/soong/android"
2019-12-03 16:25:00 +01:00
"android/soong/cc"
)
2021-03-09 23:27:13 +01:00
var ccTestFs = android . MockFS {
2021-02-22 12:50:04 +01:00
"Test.cpp" : nil ,
"myinclude/Test.h" : nil ,
"myinclude-android/AndroidTest.h" : nil ,
"myinclude-host/HostTest.h" : nil ,
"arm64/include/Arm64Test.h" : nil ,
"libfoo.so" : nil ,
"aidl/foo/bar/Test.aidl" : nil ,
"some/where/stubslib.map.txt" : nil ,
2020-07-11 05:33:29 +02:00
}
2019-11-19 20:44:10 +01:00
// Adds a native bridge target to the configured list of targets.
var prepareForTestWithNativeBridgeTarget = android . FixtureModifyConfig ( func ( config android . Config ) {
config . Targets [ android . Android ] = append ( config . Targets [ android . Android ] , android . Target {
Os : android . Android ,
Arch : android . Arch {
ArchType : android . Arm64 ,
ArchVariant : "armv8-a" ,
CpuVariant : "cpu" ,
Abi : nil ,
ArchFeatures : nil ,
} ,
NativeBridge : android . NativeBridgeEnabled ,
NativeBridgeHostArchName : "x86_64" ,
NativeBridgeRelativePath : "native_bridge" ,
} )
} )
2021-03-09 23:27:13 +01:00
func testSdkWithCc ( t * testing . T , bp string ) * android . TestResult {
2019-11-30 18:49:09 +01:00
t . Helper ( )
2020-07-11 05:33:29 +02:00
return testSdkWithFs ( t , bp , ccTestFs )
2019-11-30 18:49:09 +01:00
}
2019-12-03 16:25:00 +01:00
// Contains tests for SDK members provided by the cc package.
2020-07-11 05:52:24 +02:00
func TestSingleDeviceOsAssumption ( t * testing . T ) {
// Mock a module with DeviceSupported() == true.
s := & sdk { }
android . InitAndroidArchModule ( s , android . DeviceSupported , android . MultilibCommon )
osTypes := s . getPossibleOsTypes ( )
if len ( osTypes ) != 1 {
// The snapshot generation assumes there is a single device OS. If more are
// added it might need to disable them by default, like it does for host
// OS'es.
t . Errorf ( "expected a single device OS, got %v" , osTypes )
}
}
2019-12-03 16:25:00 +01:00
func TestSdkIsCompileMultilibBoth ( t * testing . T ) {
2019-11-30 18:49:09 +01:00
result := testSdkWithCc ( t , `
2019-12-03 16:25:00 +01:00
sdk {
name : "mysdk" ,
native_shared_libs : [ "sdkmember" ] ,
}
cc_library_shared {
name : "sdkmember" ,
srcs : [ "Test.cpp" ] ,
stl : "none" ,
}
` )
2019-11-21 01:39:12 +01:00
armOutput := result . Module ( "sdkmember" , "android_arm_armv7-a-neon_shared" ) . ( * cc . Module ) . OutputFile ( )
arm64Output := result . Module ( "sdkmember" , "android_arm64_armv8-a_shared" ) . ( * cc . Module ) . OutputFile ( )
2019-12-03 16:25:00 +01:00
var inputs [ ] string
2020-02-25 20:26:33 +01:00
buildParams := result . Module ( "mysdk" , android . CommonOS . Name ) . BuildParamsForTests ( )
2019-12-03 16:25:00 +01:00
for _ , bp := range buildParams {
if bp . Input != nil {
inputs = append ( inputs , bp . Input . String ( ) )
}
}
// ensure that both 32/64 outputs are inputs of the sdk snapshot
ensureListContains ( t , inputs , armOutput . String ( ) )
ensureListContains ( t , inputs , arm64Output . String ( ) )
}
2020-06-30 21:34:00 +02:00
func TestSdkCompileMultilibOverride ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
2020-07-10 01:14:03 +02:00
host_supported : true ,
2020-06-30 21:34:00 +02:00
native_shared_libs : [ "sdkmember" ] ,
compile_multilib : "64" ,
}
cc_library_shared {
name : "sdkmember" ,
2020-07-10 01:14:03 +02:00
host_supported : true ,
2020-06-30 21:34:00 +02:00
srcs : [ "Test.cpp" ] ,
stl : "none" ,
compile_multilib : "64" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-07-10 01:14:03 +02:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "sdkmember" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-07-10 01:14:03 +02:00
host_supported : true ,
stl : "none" ,
compile_multilib : "64" ,
2020-07-10 20:55:36 +02:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-07-10 20:55:36 +02:00
android_arm64 : {
srcs : [ "android/arm64/lib/sdkmember.so" ] ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-07-10 20:55:36 +02:00
srcs : [ "linux_glibc/x86_64/lib/sdkmember.so" ] ,
2020-07-10 01:14:03 +02:00
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-07-10 01:14:03 +02:00
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "mysdk_sdkmember@current" ,
sdk_member_name : "sdkmember" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-07-10 01:14:03 +02:00
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-07-10 01:14:03 +02:00
stl : "none" ,
compile_multilib : "64" ,
2020-07-10 20:55:36 +02:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-07-10 20:55:36 +02:00
android_arm64 : {
srcs : [ "android/arm64/lib/sdkmember.so" ] ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-07-10 20:55:36 +02:00
srcs : [ "linux_glibc/x86_64/lib/sdkmember.so" ] ,
2020-07-10 01:14:03 +02:00
} ,
} ,
}
sdk_snapshot {
name : "mysdk@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-07-10 01:14:03 +02:00
host_supported : true ,
2020-07-10 20:55:36 +02:00
compile_multilib : "64" ,
2021-04-24 12:34:46 +02:00
native_shared_libs : [ "mysdk_sdkmember@current" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2020-07-10 01:14:03 +02:00
}
` ) ,
2020-06-30 21:34:00 +02:00
checkAllCopyRules ( `
2020-07-10 20:55:36 +02:00
. intermediates / sdkmember / android_arm64_armv8 - a_shared / sdkmember . so - > android / arm64 / lib / sdkmember . so
. intermediates / sdkmember / linux_glibc_x86_64_shared / sdkmember . so - > linux_glibc / x86_64 / lib / sdkmember . so
2020-06-30 21:34:00 +02:00
` ) )
}
2019-12-03 16:25:00 +01:00
func TestBasicSdkWithCc ( t * testing . T ) {
2019-11-30 18:49:09 +01:00
result := testSdkWithCc ( t , `
2019-12-03 16:25:00 +01:00
sdk {
name : "mysdk" ,
native_shared_libs : [ "sdkmember" ] ,
}
2019-12-13 20:50:38 +01:00
cc_library_shared {
name : "sdkmember" ,
2020-02-15 20:29:50 +01:00
system_shared_libs : [ ] ,
2020-07-07 04:22:21 +02:00
stl : "none" ,
apex_available : [ "mysdkapex" ] ,
2019-12-13 20:50:38 +01:00
}
2019-12-03 16:25:00 +01:00
sdk_snapshot {
name : "mysdk@1" ,
2021-05-06 17:33:52 +02:00
native_shared_libs : [ "sdkmember_mysdk@1" ] ,
2019-12-03 16:25:00 +01:00
}
sdk_snapshot {
name : "mysdk@2" ,
2021-05-06 17:33:52 +02:00
native_shared_libs : [ "sdkmember_mysdk@2" ] ,
2019-12-03 16:25:00 +01:00
}
cc_prebuilt_library_shared {
name : "sdkmember" ,
srcs : [ "libfoo.so" ] ,
prefer : false ,
system_shared_libs : [ ] ,
stl : "none" ,
}
cc_prebuilt_library_shared {
2021-05-06 17:33:52 +02:00
name : "sdkmember_mysdk@1" ,
2019-12-03 16:25:00 +01:00
sdk_member_name : "sdkmember" ,
srcs : [ "libfoo.so" ] ,
system_shared_libs : [ ] ,
stl : "none" ,
2020-01-10 16:12:39 +01:00
// TODO: remove //apex_available:platform
apex_available : [
"//apex_available:platform" ,
"myapex" ,
] ,
2019-12-03 16:25:00 +01:00
}
cc_prebuilt_library_shared {
2021-05-06 17:33:52 +02:00
name : "sdkmember_mysdk@2" ,
2019-12-03 16:25:00 +01:00
sdk_member_name : "sdkmember" ,
srcs : [ "libfoo.so" ] ,
system_shared_libs : [ ] ,
stl : "none" ,
2020-01-10 16:12:39 +01:00
// TODO: remove //apex_available:platform
apex_available : [
"//apex_available:platform" ,
"myapex2" ,
] ,
2019-12-03 16:25:00 +01:00
}
cc_library_shared {
name : "mycpplib" ,
srcs : [ "Test.cpp" ] ,
shared_libs : [ "sdkmember" ] ,
system_shared_libs : [ ] ,
stl : "none" ,
2020-01-10 16:12:39 +01:00
apex_available : [
"myapex" ,
"myapex2" ,
] ,
2019-12-03 16:25:00 +01:00
}
apex {
name : "myapex" ,
native_shared_libs : [ "mycpplib" ] ,
uses_sdks : [ "mysdk@1" ] ,
key : "myapex.key" ,
certificate : ":myapex.cert" ,
2021-02-16 12:40:16 +01:00
updatable : false ,
2019-12-03 16:25:00 +01:00
}
apex {
name : "myapex2" ,
native_shared_libs : [ "mycpplib" ] ,
uses_sdks : [ "mysdk@2" ] ,
key : "myapex.key" ,
certificate : ":myapex.cert" ,
2021-02-16 12:40:16 +01:00
updatable : false ,
2019-12-03 16:25:00 +01:00
}
2020-07-07 04:22:21 +02:00
apex {
name : "mysdkapex" ,
native_shared_libs : [ "sdkmember" ] ,
key : "myapex.key" ,
certificate : ":myapex.cert" ,
2021-02-16 12:40:16 +01:00
updatable : false ,
2020-07-07 04:22:21 +02:00
}
2019-12-03 16:25:00 +01:00
` )
2021-05-06 17:33:52 +02:00
sdkMemberV1 := result . ModuleForTests ( "sdkmember_mysdk@1" , "android_arm64_armv8-a_shared_apex10000_mysdk_1" ) . Rule ( "toc" ) . Output
sdkMemberV2 := result . ModuleForTests ( "sdkmember_mysdk@2" , "android_arm64_armv8-a_shared_apex10000_mysdk_2" ) . Rule ( "toc" ) . Output
2019-12-03 16:25:00 +01:00
Reland: Deduplicate APEX variants that would build identically
APEX variants that share the same SDK version and updatability
almost always use identical command line arguments to build but
with different intermediates directories. This causes unnecessary
build time and disk space for duplicated work.
Deduplicate APEX variants that would build identically. Create
aliases from the per-APEX variations to the new shared variations
so that the APEX modules can continue to depend on them via the
APEX name as the variation.
This has one significant change in behavior. Before this change,
if an APEX had two libraries in its direct dependencies and one
of those libraries depended on the other, and the second library
had stubs, then the first library would depend on the implementation
of the second library and not the stubs. After this change, if
the first library is also present in a second APEX but the second
library is not, then the common variant shared between the two
APEXes would use the stubs, not the implementation.
In a correctly configured set of build rules this change will
be irrelevant, because if the compilation worked for the second
APEX using stubs then it will work for the common variant using
stubs. However, if an incorrect change to the build rules is
made this could lead to confusing errors, as a previously-working
common variant could suddenly stop building when a module is added
to a new APEX without its dependencies that require implementation
APIs to compile.
This change reduces the number of modules in an AOSP arm64-userdebug
build by 3% (52242 to 50586), reduces the number of variants of the
libcutils module from 74 to 53, and reduces the number of variants
of the massive libart[d] modules from 44 to 32.
This relands I0529837476a253c32b3dfb98dcccf107427c742c with a fix
to always mark permissions XML files of java_sdk_library modules as
unique per apex since they contain the APEX filename, and a fix
to UpdateUniqueApexVariationsForDeps to check ApexInfo.InApexes
instead of DepIsInSameApex to check if two modules are in the same
apex to account for a module that depends on another in a way that
doesn't normally include the dependency in the APEX (e.g. a libs
property), but the dependency is directly included in the APEX.
Bug: 164216768
Test: go test ./build/soong/apex/...
Change-Id: I2ae170601f764e5b88d0be2e0e6adc84e3a4d9cc
2020-08-11 21:17:01 +02:00
cpplibForMyApex := result . ModuleForTests ( "mycpplib" , "android_arm64_armv8-a_shared_apex10000_mysdk_1" )
cpplibForMyApex2 := result . ModuleForTests ( "mycpplib" , "android_arm64_armv8-a_shared_apex10000_mysdk_2" )
2019-12-03 16:25:00 +01:00
// Depending on the uses_sdks value, different libs are linked
ensureListContains ( t , pathsToStrings ( cpplibForMyApex . Rule ( "ld" ) . Implicits ) , sdkMemberV1 . String ( ) )
ensureListContains ( t , pathsToStrings ( cpplibForMyApex2 . Rule ( "ld" ) . Implicits ) , sdkMemberV2 . String ( ) )
}
2019-12-13 20:50:38 +01:00
// Make sure the sdk can use host specific cc libraries static/shared and both.
func TestHostSdkWithCc ( t * testing . T ) {
testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
device_supported : false ,
host_supported : true ,
native_shared_libs : [ "sdkshared" ] ,
native_static_libs : [ "sdkstatic" ] ,
}
cc_library_host_shared {
name : "sdkshared" ,
stl : "none" ,
}
cc_library_host_static {
name : "sdkstatic" ,
stl : "none" ,
}
` )
}
// Make sure the sdk can use cc libraries static/shared and both.
func TestSdkWithCc ( t * testing . T ) {
testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
native_shared_libs : [ "sdkshared" , "sdkboth1" ] ,
native_static_libs : [ "sdkstatic" , "sdkboth2" ] ,
}
cc_library_shared {
name : "sdkshared" ,
stl : "none" ,
}
cc_library_static {
name : "sdkstatic" ,
stl : "none" ,
}
cc_library {
name : "sdkboth1" ,
stl : "none" ,
}
cc_library {
name : "sdkboth2" ,
stl : "none" ,
}
` )
}
Add SDK member support for cc_object.
Test: m nothing
Test: Add
sdk {
name: "runtime-module-sdk",
native_shared_libs: [
"libc",
"libdl",
"libm",
"ld-android",
],
native_objects: [
"crtbegin_dynamic",
"crtbegin_static",
"crtend_android",
],
}
to bionic/apex/Android.bp. Then:
build/soong/scripts/build-aml-prebuilts.sh runtime-module-sdk
Take the generated runtime-module-sdk-current.zip and unzip into a
master-art tree without bionic/, edit the generated Android.bp to
extend cc_prebuilt_* modules with:
nocrt: true,
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
recovery_available: true,
vendor_available: true,
ramdisk_available: true,
Then "m com.android.art.debug". This passes Soong but fails in the
build step because more members are required.
Bug: 148934017
Change-Id: I2ab8f6aadb1440b325697cae4a8ed761c62d15d2
2020-03-10 23:37:59 +01:00
func TestSnapshotWithObject ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
native_objects : [ "crtobj" ] ,
}
cc_object {
name : "crtobj" ,
stl : "none" ,
2021-07-22 20:39:44 +02:00
system_shared_libs : [ ] ,
2020-08-21 19:43:51 +02:00
sanitize : {
never : true ,
} ,
Add SDK member support for cc_object.
Test: m nothing
Test: Add
sdk {
name: "runtime-module-sdk",
native_shared_libs: [
"libc",
"libdl",
"libm",
"ld-android",
],
native_objects: [
"crtbegin_dynamic",
"crtbegin_static",
"crtend_android",
],
}
to bionic/apex/Android.bp. Then:
build/soong/scripts/build-aml-prebuilts.sh runtime-module-sdk
Take the generated runtime-module-sdk-current.zip and unzip into a
master-art tree without bionic/, edit the generated Android.bp to
extend cc_prebuilt_* modules with:
nocrt: true,
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
recovery_available: true,
vendor_available: true,
ramdisk_available: true,
Then "m com.android.art.debug". This passes Soong but fails in the
build step because more members are required.
Bug: 148934017
Change-Id: I2ab8f6aadb1440b325697cae4a8ed761c62d15d2
2020-03-10 23:37:59 +01:00
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
Add SDK member support for cc_object.
Test: m nothing
Test: Add
sdk {
name: "runtime-module-sdk",
native_shared_libs: [
"libc",
"libdl",
"libm",
"ld-android",
],
native_objects: [
"crtbegin_dynamic",
"crtbegin_static",
"crtend_android",
],
}
to bionic/apex/Android.bp. Then:
build/soong/scripts/build-aml-prebuilts.sh runtime-module-sdk
Take the generated runtime-module-sdk-current.zip and unzip into a
master-art tree without bionic/, edit the generated Android.bp to
extend cc_prebuilt_* modules with:
nocrt: true,
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
recovery_available: true,
vendor_available: true,
ramdisk_available: true,
Then "m com.android.art.debug". This passes Soong but fails in the
build step because more members are required.
Bug: 148934017
Change-Id: I2ab8f6aadb1440b325697cae4a8ed761c62d15d2
2020-03-10 23:37:59 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_object {
2021-02-22 13:13:13 +01:00
name : "crtobj" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
Add SDK member support for cc_object.
Test: m nothing
Test: Add
sdk {
name: "runtime-module-sdk",
native_shared_libs: [
"libc",
"libdl",
"libm",
"ld-android",
],
native_objects: [
"crtbegin_dynamic",
"crtbegin_static",
"crtend_android",
],
}
to bionic/apex/Android.bp. Then:
build/soong/scripts/build-aml-prebuilts.sh runtime-module-sdk
Take the generated runtime-module-sdk-current.zip and unzip into a
master-art tree without bionic/, edit the generated Android.bp to
extend cc_prebuilt_* modules with:
nocrt: true,
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
recovery_available: true,
vendor_available: true,
ramdisk_available: true,
Then "m com.android.art.debug". This passes Soong but fails in the
build step because more members are required.
Bug: 148934017
Change-Id: I2ab8f6aadb1440b325697cae4a8ed761c62d15d2
2020-03-10 23:37:59 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-07-22 20:39:44 +02:00
system_shared_libs : [ ] ,
2020-08-21 19:43:51 +02:00
sanitize : {
never : true ,
} ,
Add SDK member support for cc_object.
Test: m nothing
Test: Add
sdk {
name: "runtime-module-sdk",
native_shared_libs: [
"libc",
"libdl",
"libm",
"ld-android",
],
native_objects: [
"crtbegin_dynamic",
"crtbegin_static",
"crtend_android",
],
}
to bionic/apex/Android.bp. Then:
build/soong/scripts/build-aml-prebuilts.sh runtime-module-sdk
Take the generated runtime-module-sdk-current.zip and unzip into a
master-art tree without bionic/, edit the generated Android.bp to
extend cc_prebuilt_* modules with:
nocrt: true,
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
recovery_available: true,
vendor_available: true,
ramdisk_available: true,
Then "m com.android.art.debug". This passes Soong but fails in the
build step because more members are required.
Bug: 148934017
Change-Id: I2ab8f6aadb1440b325697cae4a8ed761c62d15d2
2020-03-10 23:37:59 +01:00
arch : {
arm64 : {
srcs : [ "arm64/lib/crtobj.o" ] ,
} ,
arm : {
srcs : [ "arm/lib/crtobj.o" ] ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
// Make sure that the generated sdk_snapshot uses the native_objects property.
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
Add SDK member support for cc_object.
Test: m nothing
Test: Add
sdk {
name: "runtime-module-sdk",
native_shared_libs: [
"libc",
"libdl",
"libm",
"ld-android",
],
native_objects: [
"crtbegin_dynamic",
"crtbegin_static",
"crtend_android",
],
}
to bionic/apex/Android.bp. Then:
build/soong/scripts/build-aml-prebuilts.sh runtime-module-sdk
Take the generated runtime-module-sdk-current.zip and unzip into a
master-art tree without bionic/, edit the generated Android.bp to
extend cc_prebuilt_* modules with:
nocrt: true,
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
recovery_available: true,
vendor_available: true,
ramdisk_available: true,
Then "m com.android.art.debug". This passes Soong but fails in the
build step because more members are required.
Bug: 148934017
Change-Id: I2ab8f6aadb1440b325697cae4a8ed761c62d15d2
2020-03-10 23:37:59 +01:00
cc_prebuilt_object {
2021-02-22 13:13:13 +01:00
name : "mysdk_crtobj@current" ,
sdk_member_name : "crtobj" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
Add SDK member support for cc_object.
Test: m nothing
Test: Add
sdk {
name: "runtime-module-sdk",
native_shared_libs: [
"libc",
"libdl",
"libm",
"ld-android",
],
native_objects: [
"crtbegin_dynamic",
"crtbegin_static",
"crtend_android",
],
}
to bionic/apex/Android.bp. Then:
build/soong/scripts/build-aml-prebuilts.sh runtime-module-sdk
Take the generated runtime-module-sdk-current.zip and unzip into a
master-art tree without bionic/, edit the generated Android.bp to
extend cc_prebuilt_* modules with:
nocrt: true,
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
recovery_available: true,
vendor_available: true,
ramdisk_available: true,
Then "m com.android.art.debug". This passes Soong but fails in the
build step because more members are required.
Bug: 148934017
Change-Id: I2ab8f6aadb1440b325697cae4a8ed761c62d15d2
2020-03-10 23:37:59 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-07-22 20:39:44 +02:00
system_shared_libs : [ ] ,
2020-08-21 19:43:51 +02:00
sanitize : {
never : true ,
} ,
Add SDK member support for cc_object.
Test: m nothing
Test: Add
sdk {
name: "runtime-module-sdk",
native_shared_libs: [
"libc",
"libdl",
"libm",
"ld-android",
],
native_objects: [
"crtbegin_dynamic",
"crtbegin_static",
"crtend_android",
],
}
to bionic/apex/Android.bp. Then:
build/soong/scripts/build-aml-prebuilts.sh runtime-module-sdk
Take the generated runtime-module-sdk-current.zip and unzip into a
master-art tree without bionic/, edit the generated Android.bp to
extend cc_prebuilt_* modules with:
nocrt: true,
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
recovery_available: true,
vendor_available: true,
ramdisk_available: true,
Then "m com.android.art.debug". This passes Soong but fails in the
build step because more members are required.
Bug: 148934017
Change-Id: I2ab8f6aadb1440b325697cae4a8ed761c62d15d2
2020-03-10 23:37:59 +01:00
arch : {
arm64 : {
srcs : [ "arm64/lib/crtobj.o" ] ,
} ,
arm : {
srcs : [ "arm/lib/crtobj.o" ] ,
} ,
} ,
}
sdk_snapshot {
name : "mysdk@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
Add SDK member support for cc_object.
Test: m nothing
Test: Add
sdk {
name: "runtime-module-sdk",
native_shared_libs: [
"libc",
"libdl",
"libm",
"ld-android",
],
native_objects: [
"crtbegin_dynamic",
"crtbegin_static",
"crtend_android",
],
}
to bionic/apex/Android.bp. Then:
build/soong/scripts/build-aml-prebuilts.sh runtime-module-sdk
Take the generated runtime-module-sdk-current.zip and unzip into a
master-art tree without bionic/, edit the generated Android.bp to
extend cc_prebuilt_* modules with:
nocrt: true,
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
recovery_available: true,
vendor_available: true,
ramdisk_available: true,
Then "m com.android.art.debug". This passes Soong but fails in the
build step because more members are required.
Bug: 148934017
Change-Id: I2ab8f6aadb1440b325697cae4a8ed761c62d15d2
2020-03-10 23:37:59 +01:00
native_objects : [ "mysdk_crtobj@current" ] ,
}
` ) ,
checkAllCopyRules ( `
. intermediates / crtobj / android_arm64_armv8 - a / crtobj . o - > arm64 / lib / crtobj . o
. intermediates / crtobj / android_arm_armv7 - a - neon / crtobj . o - > arm / lib / crtobj . o
` ) ,
)
}
2019-12-11 19:34:15 +01:00
func TestSnapshotWithCcDuplicateHeaders ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
native_shared_libs : [ "mynativelib1" , "mynativelib2" ] ,
}
cc_library_shared {
name : "mynativelib1" ,
srcs : [
"Test.cpp" ,
] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2019-12-11 19:34:15 +01:00
stl : "none" ,
}
cc_library_shared {
name : "mynativelib2" ,
srcs : [
"Test.cpp" ,
] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2019-12-11 19:34:15 +01:00
stl : "none" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2019-12-11 19:34:15 +01:00
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2019-11-21 01:39:12 +01:00
. intermediates / mynativelib1 / android_arm64_armv8 - a_shared / mynativelib1 . so - > arm64 / lib / mynativelib1 . so
. intermediates / mynativelib1 / android_arm_armv7 - a - neon_shared / mynativelib1 . so - > arm / lib / mynativelib1 . so
. intermediates / mynativelib2 / android_arm64_armv8 - a_shared / mynativelib2 . so - > arm64 / lib / mynativelib2 . so
. intermediates / mynativelib2 / android_arm_armv7 - a - neon_shared / mynativelib2 . so - > arm / lib / mynativelib2 . so
2019-12-11 19:34:15 +01:00
` ) ,
)
}
2021-02-17 11:55:25 +01:00
func TestSnapshotWithCcExportGeneratedHeaders ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
native_shared_libs : [ "mynativelib" ] ,
}
cc_library_shared {
name : "mynativelib" ,
srcs : [
"Test.cpp" ,
] ,
generated_headers : [
"generated_foo" ,
] ,
export_generated_headers : [
"generated_foo" ,
] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2021-02-17 11:55:25 +01:00
stl : "none" ,
}
genrule {
name : "generated_foo" ,
cmd : "generate-foo" ,
out : [
"generated_foo/protos/foo/bar.h" ,
] ,
export_include_dirs : [
"." ,
"protos" ,
] ,
}
` )
2021-03-21 23:01:55 +01:00
// TODO(b/183322862): Remove this and fix the issue.
errorHandler := android . FixtureExpectsAtLeastOneErrorMatchingPattern ( ` module source path "snapshot/include_gen/generated_foo/gen/protos" does not exist ` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-17 11:55:25 +01:00
checkUnversionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
name : "mynativelib" ,
prefer : false ,
visibility : [ "//visibility:public" ] ,
apex_available : [ "//apex_available:platform" ] ,
stl : "none" ,
compile_multilib : "both" ,
2021-02-17 13:17:40 +01:00
export_include_dirs : [
"include/myinclude" ,
"include_gen/generated_foo/gen" ,
"include_gen/generated_foo/gen/protos" ,
] ,
2021-02-17 11:55:25 +01:00
arch : {
arm64 : {
srcs : [ "arm64/lib/mynativelib.so" ] ,
} ,
arm : {
srcs : [ "arm/lib/mynativelib.so" ] ,
} ,
} ,
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2021-02-17 13:17:40 +01:00
. intermediates / generated_foo / gen / generated_foo / protos / foo / bar . h - > include_gen / generated_foo / gen / generated_foo / protos / foo / bar . h
2021-02-17 11:55:25 +01:00
. intermediates / mynativelib / android_arm64_armv8 - a_shared / mynativelib . so - > arm64 / lib / mynativelib . so
. intermediates / mynativelib / android_arm_armv7 - a - neon_shared / mynativelib . so - > arm / lib / mynativelib . so
` ) ,
2021-03-21 23:01:55 +01:00
snapshotTestErrorHandler ( checkSnapshotWithoutSource , errorHandler ) ,
snapshotTestErrorHandler ( checkSnapshotWithSourcePreferred , errorHandler ) ,
snapshotTestErrorHandler ( checkSnapshotPreferredWithSource , errorHandler ) ,
2021-02-17 11:55:25 +01:00
)
}
2020-09-15 03:32:35 +02:00
// Verify that when the shared library has some common and some arch specific
// properties that the generated snapshot is optimized properly. Substruct
// handling is tested with the sanitize clauses (but note there's a lot of
// built-in logic in sanitize.go that can affect those flags).
2019-12-11 21:00:57 +01:00
func TestSnapshotWithCcSharedLibraryCommonProperties ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
native_shared_libs : [ "mynativelib" ] ,
}
cc_library_shared {
name : "mynativelib" ,
srcs : [
"Test.cpp" ,
"aidl/foo/bar/Test.aidl" ,
] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2020-09-15 03:32:35 +02:00
sanitize : {
fuzzer : false ,
integer_overflow : true ,
diag : { undefined : false } ,
} ,
2019-12-11 21:00:57 +01:00
arch : {
arm64 : {
export_system_include_dirs : [ "arm64/include" ] ,
2020-09-15 03:32:35 +02:00
sanitize : {
integer_overflow : false ,
} ,
2019-12-11 21:00:57 +01:00
} ,
} ,
stl : "none" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2019-12-11 21:00:57 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
name : "mynativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-09-15 03:32:35 +02:00
sanitize : {
fuzzer : false ,
diag : {
undefined : false ,
} ,
} ,
2019-12-11 21:00:57 +01:00
arch : {
arm64 : {
srcs : [ "arm64/lib/mynativelib.so" ] ,
export_system_include_dirs : [ "arm64/include/arm64/include" ] ,
2020-09-15 03:32:35 +02:00
sanitize : {
integer_overflow : false ,
} ,
2019-12-11 21:00:57 +01:00
} ,
arm : {
srcs : [ "arm/lib/mynativelib.so" ] ,
2020-09-15 03:32:35 +02:00
sanitize : {
integer_overflow : true ,
} ,
2019-12-11 21:00:57 +01:00
} ,
} ,
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2020-10-29 00:38:33 +01:00
. intermediates / mynativelib / android_arm64_armv8 - a_shared / mynativelib . so - > arm64 / lib / mynativelib . so
2019-12-11 21:00:57 +01:00
arm64 / include / Arm64Test . h - > arm64 / include / arm64 / include / Arm64Test . h
2019-11-21 01:39:12 +01:00
. intermediates / mynativelib / android_arm_armv7 - a - neon_shared / mynativelib . so - > arm / lib / mynativelib . so ` ) ,
2019-12-11 21:00:57 +01:00
)
}
2020-01-16 12:47:25 +01:00
func TestSnapshotWithCcBinary ( t * testing . T ) {
result := testSdkWithCc ( t , `
module_exports {
name : "mymodule_exports" ,
native_binaries : [ "mynativebinary" ] ,
}
cc_binary {
name : "mynativebinary" ,
srcs : [
"Test.cpp" ,
] ,
compile_multilib : "both" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mymodule_exports" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-01-16 12:47:25 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_binary {
2021-02-22 13:13:13 +01:00
name : "mynativebinary" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-01-16 12:47:25 +01:00
compile_multilib : "both" ,
arch : {
arm64 : {
srcs : [ "arm64/bin/mynativebinary" ] ,
} ,
arm : {
srcs : [ "arm/bin/mynativebinary" ] ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
// Make sure that the generated sdk_snapshot uses the native_binaries property.
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-01-16 12:47:25 +01:00
cc_prebuilt_binary {
2021-02-22 13:13:13 +01:00
name : "mymodule_exports_mynativebinary@current" ,
sdk_member_name : "mynativebinary" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-01-16 12:47:25 +01:00
compile_multilib : "both" ,
arch : {
arm64 : {
srcs : [ "arm64/bin/mynativebinary" ] ,
} ,
arm : {
srcs : [ "arm/bin/mynativebinary" ] ,
} ,
} ,
}
module_exports_snapshot {
name : "mymodule_exports@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-01-16 12:47:25 +01:00
native_binaries : [ "mymodule_exports_mynativebinary@current" ] ,
}
` ) ,
checkAllCopyRules ( `
. intermediates / mynativebinary / android_arm64_armv8 - a / mynativebinary - > arm64 / bin / mynativebinary
. intermediates / mynativebinary / android_arm_armv7 - a - neon / mynativebinary - > arm / bin / mynativebinary
` ) ,
)
}
2020-03-02 11:16:35 +01:00
func TestMultipleHostOsTypesSnapshotWithCcBinary ( t * testing . T ) {
result := testSdkWithCc ( t , `
module_exports {
name : "myexports" ,
device_supported : false ,
host_supported : true ,
native_binaries : [ "mynativebinary" ] ,
target : {
windows : {
enabled : true ,
} ,
} ,
}
cc_binary {
name : "mynativebinary" ,
device_supported : false ,
host_supported : true ,
srcs : [
"Test.cpp" ,
] ,
compile_multilib : "both" ,
stl : "none" ,
target : {
windows : {
enabled : true ,
} ,
} ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "myexports" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-03-02 11:16:35 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_binary {
2021-02-22 13:13:13 +01:00
name : "mynativebinary" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-02 11:16:35 +01:00
device_supported : false ,
host_supported : true ,
2020-05-28 23:58:01 +02:00
stl : "none" ,
2020-03-02 11:16:35 +01:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-03-02 11:16:35 +01:00
linux_glibc : {
compile_multilib : "both" ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "linux_glibc/x86_64/bin/mynativebinary" ] ,
} ,
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "linux_glibc/x86/bin/mynativebinary" ] ,
} ,
windows : {
compile_multilib : "64" ,
} ,
windows_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "windows/x86_64/bin/mynativebinary.exe" ] ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-03-02 11:16:35 +01:00
cc_prebuilt_binary {
2021-02-22 13:13:13 +01:00
name : "myexports_mynativebinary@current" ,
sdk_member_name : "mynativebinary" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-02 11:16:35 +01:00
device_supported : false ,
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-05-28 23:58:01 +02:00
stl : "none" ,
2020-03-02 11:16:35 +01:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-03-02 11:16:35 +01:00
linux_glibc : {
compile_multilib : "both" ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "linux_glibc/x86_64/bin/mynativebinary" ] ,
} ,
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "linux_glibc/x86/bin/mynativebinary" ] ,
} ,
windows : {
compile_multilib : "64" ,
} ,
windows_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "windows/x86_64/bin/mynativebinary.exe" ] ,
} ,
} ,
}
module_exports_snapshot {
name : "myexports@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-03-02 11:16:35 +01:00
device_supported : false ,
host_supported : true ,
native_binaries : [ "myexports_mynativebinary@current" ] ,
2020-03-20 18:50:07 +01:00
target : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
windows : {
compile_multilib : "64" ,
} ,
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86 : {
enabled : true ,
} ,
windows_x86_64 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
2020-03-20 18:50:07 +01:00
} ,
} ,
2020-03-02 11:16:35 +01:00
}
` ) ,
checkAllCopyRules ( `
. intermediates / mynativebinary / linux_glibc_x86_64 / mynativebinary - > linux_glibc / x86_64 / bin / mynativebinary
. intermediates / mynativebinary / linux_glibc_x86 / mynativebinary - > linux_glibc / x86 / bin / mynativebinary
. intermediates / mynativebinary / windows_x86_64 / mynativebinary . exe - > windows / x86_64 / bin / mynativebinary . exe
` ) ,
)
}
2020-07-11 05:52:24 +02:00
func TestSnapshotWithSingleHostOsType ( t * testing . T ) {
2021-03-20 01:36:55 +01:00
result := android . GroupFixturePreparers (
prepareForSdkTest ,
2021-03-09 23:27:13 +01:00
ccTestFs . AddToFixture ( ) ,
cc . PrepareForTestOnLinuxBionic ,
android . FixtureModifyConfig ( func ( config android . Config ) {
config . Targets [ android . LinuxBionic ] = [ ] android . Target {
{ android . LinuxBionic , android . Arch { ArchType : android . X86_64 } , android . NativeBridgeDisabled , "" , "" , false } ,
}
} ) ,
) . RunTestWithBp ( t , `
2020-07-11 05:52:24 +02:00
cc_defaults {
name : "mydefaults" ,
device_supported : false ,
host_supported : true ,
compile_multilib : "64" ,
target : {
host : {
enabled : false ,
} ,
linux_bionic : {
enabled : true ,
} ,
} ,
}
module_exports {
name : "myexports" ,
defaults : [ "mydefaults" ] ,
native_shared_libs : [ "mynativelib" ] ,
native_binaries : [ "mynativebinary" ] ,
compile_multilib : "64" , // The built-in default in sdk.go overrides mydefaults.
}
cc_library {
name : "mynativelib" ,
defaults : [ "mydefaults" ] ,
srcs : [
"Test.cpp" ,
] ,
stl : "none" ,
}
cc_binary {
name : "mynativebinary" ,
defaults : [ "mydefaults" ] ,
srcs : [
"Test.cpp" ,
] ,
stl : "none" ,
}
2021-03-09 23:27:13 +01:00
` )
2020-07-11 05:52:24 +02:00
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "myexports" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-07-11 05:52:24 +02:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_binary {
2021-02-22 13:13:13 +01:00
name : "mynativebinary" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-07-11 05:52:24 +02:00
device_supported : false ,
host_supported : true ,
stl : "none" ,
compile_multilib : "64" ,
target : {
host : {
enabled : false ,
} ,
linux_bionic_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-07-11 05:52:24 +02:00
srcs : [ "x86_64/bin/mynativebinary" ] ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
cc_prebuilt_library_shared {
name : "mynativelib" ,
2020-07-11 05:52:24 +02:00
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-07-11 05:52:24 +02:00
device_supported : false ,
host_supported : true ,
stl : "none" ,
compile_multilib : "64" ,
target : {
host : {
enabled : false ,
} ,
linux_bionic_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2021-02-22 13:13:13 +01:00
srcs : [ "x86_64/lib/mynativelib.so" ] ,
2020-07-11 05:52:24 +02:00
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-07-11 05:52:24 +02:00
2021-02-22 13:13:13 +01:00
cc_prebuilt_binary {
name : "myexports_mynativebinary@current" ,
sdk_member_name : "mynativebinary" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-07-11 05:52:24 +02:00
device_supported : false ,
host_supported : true ,
installable : false ,
stl : "none" ,
compile_multilib : "64" ,
target : {
host : {
enabled : false ,
} ,
linux_bionic_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2021-02-22 13:13:13 +01:00
srcs : [ "x86_64/bin/mynativebinary" ] ,
2020-07-11 05:52:24 +02:00
} ,
} ,
}
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "myexports_mynativelib@current" ,
sdk_member_name : "mynativelib" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-07-11 05:52:24 +02:00
device_supported : false ,
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-07-11 05:52:24 +02:00
stl : "none" ,
compile_multilib : "64" ,
target : {
host : {
enabled : false ,
} ,
linux_bionic_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-07-11 05:52:24 +02:00
srcs : [ "x86_64/lib/mynativelib.so" ] ,
} ,
} ,
}
module_exports_snapshot {
name : "myexports@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-07-11 05:52:24 +02:00
device_supported : false ,
host_supported : true ,
2021-04-24 12:34:46 +02:00
compile_multilib : "64" ,
2020-07-11 05:52:24 +02:00
native_binaries : [ "myexports_mynativebinary@current" ] ,
native_shared_libs : [ "myexports_mynativelib@current" ] ,
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_bionic_x86_64 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
}
` ) ,
checkAllCopyRules ( `
. intermediates / mynativebinary / linux_bionic_x86_64 / mynativebinary - > x86_64 / bin / mynativebinary
. intermediates / mynativelib / linux_bionic_x86_64_shared / mynativelib . so - > x86_64 / lib / mynativelib . so
` ) ,
)
}
2020-05-28 23:58:01 +02:00
// Test that we support the necessary flags for the linker binary, which is
// special in several ways.
func TestSnapshotWithCcStaticNocrtBinary ( t * testing . 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" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mymodule_exports" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-05-28 23:58:01 +02:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_binary {
2021-02-22 13:13:13 +01:00
name : "linker" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-05-28 23:58:01 +02:00
device_supported : false ,
host_supported : true ,
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-05-28 23:58:01 +02:00
static_executable : true ,
nocrt : true ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-05-28 23:58:01 +02:00
srcs : [ "x86_64/bin/linker" ] ,
} ,
2020-07-11 05:52:24 +02:00
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-05-28 23:58:01 +02:00
srcs : [ "x86/bin/linker" ] ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-05-28 23:58:01 +02:00
cc_prebuilt_binary {
2021-02-22 13:13:13 +01:00
name : "mymodule_exports_linker@current" ,
sdk_member_name : "linker" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-05-28 23:58:01 +02:00
device_supported : false ,
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-05-28 23:58:01 +02:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-05-28 23:58:01 +02:00
static_executable : true ,
nocrt : true ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-05-28 23:58:01 +02:00
srcs : [ "x86_64/bin/linker" ] ,
} ,
2020-07-11 05:52:24 +02:00
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-05-28 23:58:01 +02:00
srcs : [ "x86/bin/linker" ] ,
} ,
} ,
}
module_exports_snapshot {
name : "mymodule_exports@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-05-28 23:58:01 +02:00
device_supported : false ,
host_supported : true ,
native_binaries : [ "mymodule_exports_linker@current" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2020-05-28 23:58:01 +02:00
}
` ) ,
checkAllCopyRules ( `
. intermediates / linker / linux_glibc_x86_64 / linker - > x86_64 / bin / linker
. intermediates / linker / linux_glibc_x86 / linker - > x86 / bin / linker
` ) ,
)
}
2019-12-11 19:42:17 +01:00
func TestSnapshotWithCcSharedLibrary ( t * testing . T ) {
2019-11-30 18:49:09 +01:00
result := testSdkWithCc ( t , `
2019-12-03 16:25:00 +01:00
sdk {
name : "mysdk" ,
native_shared_libs : [ "mynativelib" ] ,
}
cc_library_shared {
name : "mynativelib" ,
srcs : [
"Test.cpp" ,
"aidl/foo/bar/Test.aidl" ,
] ,
2020-03-04 15:22:45 +01:00
apex_available : [ "apex1" , "apex2" ] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2019-12-03 16:25:00 +01:00
aidl : {
export_aidl_headers : true ,
} ,
stl : "none" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2019-12-03 16:25:00 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
name : "mynativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-03-04 15:22:45 +01:00
apex_available : [
"apex1" ,
"apex2" ,
] ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2019-12-03 16:25:00 +01:00
arch : {
arm64 : {
srcs : [ "arm64/lib/mynativelib.so" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl" ] ,
2019-12-03 16:25:00 +01:00
} ,
arm : {
srcs : [ "arm/lib/mynativelib.so" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl" ] ,
2019-12-03 16:25:00 +01:00
} ,
} ,
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2019-11-21 01:39:12 +01:00
. intermediates / mynativelib / android_arm64_armv8 - a_shared / mynativelib . so - > arm64 / lib / mynativelib . so
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
. intermediates / mynativelib / android_arm64_armv8 - a_shared / gen / aidl / aidl / foo / bar / Test . h - > arm64 / include_gen / mynativelib / android_arm64_armv8 - a_shared / gen / aidl / aidl / foo / bar / Test . h
. intermediates / mynativelib / android_arm64_armv8 - a_shared / gen / aidl / aidl / foo / bar / BnTest . h - > arm64 / include_gen / mynativelib / android_arm64_armv8 - a_shared / gen / aidl / aidl / foo / bar / BnTest . h
. intermediates / mynativelib / android_arm64_armv8 - a_shared / gen / aidl / aidl / foo / bar / BpTest . h - > arm64 / include_gen / mynativelib / android_arm64_armv8 - a_shared / gen / aidl / aidl / foo / bar / BpTest . h
2019-11-21 01:39:12 +01:00
. intermediates / mynativelib / android_arm_armv7 - a - neon_shared / mynativelib . so - > arm / lib / mynativelib . so
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
. intermediates / mynativelib / android_arm_armv7 - a - neon_shared / gen / aidl / aidl / foo / bar / Test . h - > arm / include_gen / mynativelib / android_arm_armv7 - a - neon_shared / gen / aidl / aidl / foo / bar / Test . h
. intermediates / mynativelib / android_arm_armv7 - a - neon_shared / gen / aidl / aidl / foo / bar / BnTest . h - > arm / include_gen / mynativelib / android_arm_armv7 - a - neon_shared / gen / aidl / aidl / foo / bar / BnTest . h
. intermediates / mynativelib / android_arm_armv7 - a - neon_shared / gen / aidl / aidl / foo / bar / BpTest . h - > arm / include_gen / mynativelib / android_arm_armv7 - a - neon_shared / gen / aidl / aidl / foo / bar / BpTest . h
2019-12-03 16:25:00 +01:00
` ) ,
)
}
2020-03-06 13:30:43 +01:00
func TestSnapshotWithCcSharedLibrarySharedLibs ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
native_shared_libs : [
"mynativelib" ,
"myothernativelib" ,
"mysystemnativelib" ,
] ,
}
cc_library {
name : "mysystemnativelib" ,
srcs : [
"Test.cpp" ,
] ,
stl : "none" ,
}
cc_library_shared {
name : "myothernativelib" ,
srcs : [
"Test.cpp" ,
] ,
system_shared_libs : [
// A reference to a library that is not an sdk member. Uses libm as that
// is in the default set of modules available to this test and so is available
// both here and also when the generated Android.bp file is tested in
// CheckSnapshot(). This ensures that the system_shared_libs property correctly
// handles references to modules that are not sdk members.
"libm" ,
] ,
stl : "none" ,
}
cc_library {
name : "mynativelib" ,
srcs : [
"Test.cpp" ,
] ,
shared_libs : [
// A reference to another sdk member.
"myothernativelib" ,
] ,
target : {
android : {
shared : {
shared_libs : [
// A reference to a library that is not an sdk member. The libc library
// is used here to check that the shared_libs property is handled correctly
// in a similar way to how libm is used to check system_shared_libs above.
"libc" ,
] ,
} ,
} ,
} ,
stl : "none" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-03-06 13:30:43 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
name : "mynativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-03-06 13:30:43 +01:00
shared_libs : [
"myothernativelib" ,
"libc" ,
] ,
arch : {
arm64 : {
srcs : [ "arm64/lib/mynativelib.so" ] ,
} ,
arm : {
srcs : [ "arm/lib/mynativelib.so" ] ,
} ,
} ,
}
cc_prebuilt_library_shared {
name : "myothernativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-03-06 13:30:43 +01:00
system_shared_libs : [ "libm" ] ,
arch : {
arm64 : {
srcs : [ "arm64/lib/myothernativelib.so" ] ,
} ,
arm : {
srcs : [ "arm/lib/myothernativelib.so" ] ,
} ,
} ,
}
cc_prebuilt_library_shared {
name : "mysystemnativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-03-06 13:30:43 +01:00
arch : {
arm64 : {
srcs : [ "arm64/lib/mysystemnativelib.so" ] ,
} ,
arm : {
srcs : [ "arm/lib/mysystemnativelib.so" ] ,
} ,
} ,
}
` ) ,
checkAllCopyRules ( `
. intermediates / mynativelib / android_arm64_armv8 - a_shared / mynativelib . so - > arm64 / lib / mynativelib . so
. intermediates / mynativelib / android_arm_armv7 - a - neon_shared / mynativelib . so - > arm / lib / mynativelib . so
. intermediates / myothernativelib / android_arm64_armv8 - a_shared / myothernativelib . so - > arm64 / lib / myothernativelib . so
. intermediates / myothernativelib / android_arm_armv7 - a - neon_shared / myothernativelib . so - > arm / lib / myothernativelib . so
. intermediates / mysystemnativelib / android_arm64_armv8 - a_shared / mysystemnativelib . so - > arm64 / lib / mysystemnativelib . so
. intermediates / mysystemnativelib / android_arm_armv7 - a - neon_shared / mysystemnativelib . so - > arm / lib / mysystemnativelib . so
` ) ,
)
}
2019-12-11 19:42:17 +01:00
func TestHostSnapshotWithCcSharedLibrary ( t * testing . T ) {
2019-11-30 18:49:09 +01:00
result := testSdkWithCc ( t , `
2019-12-03 16:25:00 +01:00
sdk {
name : "mysdk" ,
device_supported : false ,
host_supported : true ,
native_shared_libs : [ "mynativelib" ] ,
}
cc_library_shared {
name : "mynativelib" ,
device_supported : false ,
host_supported : true ,
srcs : [
"Test.cpp" ,
"aidl/foo/bar/Test.aidl" ,
] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2019-12-03 16:25:00 +01:00
aidl : {
export_aidl_headers : true ,
} ,
stl : "none" ,
2020-03-05 15:09:58 +01:00
sdk_version : "minimum" ,
2019-12-03 16:25:00 +01:00
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2019-12-03 16:25:00 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "mynativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2019-12-03 16:25:00 +01:00
device_supported : false ,
host_supported : true ,
2020-03-05 15:09:58 +01:00
sdk_version : "minimum" ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2019-12-03 16:25:00 +01:00
srcs : [ "x86_64/lib/mynativelib.so" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl" ] ,
2019-12-03 16:25:00 +01:00
} ,
2020-07-11 05:52:24 +02:00
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2019-12-03 16:25:00 +01:00
srcs : [ "x86/lib/mynativelib.so" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl" ] ,
2019-12-03 16:25:00 +01:00
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2019-12-03 16:25:00 +01:00
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "mysdk_mynativelib@current" ,
sdk_member_name : "mynativelib" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2019-12-03 16:25:00 +01:00
device_supported : false ,
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-03-05 15:09:58 +01:00
sdk_version : "minimum" ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2019-12-03 16:25:00 +01:00
srcs : [ "x86_64/lib/mynativelib.so" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl" ] ,
2019-12-03 16:25:00 +01:00
} ,
2020-07-11 05:52:24 +02:00
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2019-12-03 16:25:00 +01:00
srcs : [ "x86/lib/mynativelib.so" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl" ] ,
2019-12-03 16:25:00 +01:00
} ,
} ,
}
sdk_snapshot {
name : "mysdk@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2019-12-03 16:25:00 +01:00
device_supported : false ,
host_supported : true ,
native_shared_libs : [ "mysdk_mynativelib@current" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2019-12-03 16:25:00 +01:00
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2019-12-03 16:25:00 +01:00
. intermediates / mynativelib / linux_glibc_x86_64_shared / mynativelib . so - > x86_64 / lib / mynativelib . so
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
. intermediates / mynativelib / linux_glibc_x86_64_shared / gen / aidl / aidl / foo / bar / Test . h - > x86_64 / include_gen / mynativelib / linux_glibc_x86_64_shared / gen / aidl / aidl / foo / bar / Test . h
. intermediates / mynativelib / linux_glibc_x86_64_shared / gen / aidl / aidl / foo / bar / BnTest . h - > x86_64 / include_gen / mynativelib / linux_glibc_x86_64_shared / gen / aidl / aidl / foo / bar / BnTest . h
. intermediates / mynativelib / linux_glibc_x86_64_shared / gen / aidl / aidl / foo / bar / BpTest . h - > x86_64 / include_gen / mynativelib / linux_glibc_x86_64_shared / gen / aidl / aidl / foo / bar / BpTest . h
2019-12-03 16:25:00 +01:00
. intermediates / mynativelib / linux_glibc_x86_shared / mynativelib . so - > x86 / lib / mynativelib . so
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
. intermediates / mynativelib / linux_glibc_x86_shared / gen / aidl / aidl / foo / bar / Test . h - > x86 / include_gen / mynativelib / linux_glibc_x86_shared / gen / aidl / aidl / foo / bar / Test . h
. intermediates / mynativelib / linux_glibc_x86_shared / gen / aidl / aidl / foo / bar / BnTest . h - > x86 / include_gen / mynativelib / linux_glibc_x86_shared / gen / aidl / aidl / foo / bar / BnTest . h
. intermediates / mynativelib / linux_glibc_x86_shared / gen / aidl / aidl / foo / bar / BpTest . h - > x86 / include_gen / mynativelib / linux_glibc_x86_shared / gen / aidl / aidl / foo / bar / BpTest . h
2019-12-03 16:25:00 +01:00
` ) ,
)
}
2019-12-11 19:42:17 +01:00
2020-03-02 11:16:35 +01:00
func TestMultipleHostOsTypesSnapshotWithCcSharedLibrary ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
device_supported : false ,
host_supported : true ,
native_shared_libs : [ "mynativelib" ] ,
target : {
windows : {
enabled : true ,
} ,
} ,
}
cc_library_shared {
name : "mynativelib" ,
device_supported : false ,
host_supported : true ,
srcs : [
"Test.cpp" ,
] ,
stl : "none" ,
target : {
windows : {
enabled : true ,
} ,
} ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-03-02 11:16:35 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "mynativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-02 11:16:35 +01:00
device_supported : false ,
host_supported : true ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-03-02 11:16:35 +01:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-07-10 01:14:03 +02:00
linux_glibc : {
compile_multilib : "both" ,
} ,
2020-03-02 11:16:35 +01:00
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "linux_glibc/x86_64/lib/mynativelib.so" ] ,
} ,
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "linux_glibc/x86/lib/mynativelib.so" ] ,
} ,
2020-07-10 01:14:03 +02:00
windows : {
compile_multilib : "64" ,
} ,
2020-03-02 11:16:35 +01:00
windows_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "windows/x86_64/lib/mynativelib.dll" ] ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-03-02 11:16:35 +01:00
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "mysdk_mynativelib@current" ,
sdk_member_name : "mynativelib" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-02 11:16:35 +01:00
device_supported : false ,
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-03-02 11:16:35 +01:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-07-10 01:14:03 +02:00
linux_glibc : {
compile_multilib : "both" ,
} ,
2020-03-02 11:16:35 +01:00
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "linux_glibc/x86_64/lib/mynativelib.so" ] ,
} ,
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "linux_glibc/x86/lib/mynativelib.so" ] ,
} ,
2020-07-10 01:14:03 +02:00
windows : {
compile_multilib : "64" ,
} ,
2020-03-02 11:16:35 +01:00
windows_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-02 11:16:35 +01:00
srcs : [ "windows/x86_64/lib/mynativelib.dll" ] ,
} ,
} ,
}
sdk_snapshot {
name : "mysdk@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-03-02 11:16:35 +01:00
device_supported : false ,
host_supported : true ,
native_shared_libs : [ "mysdk_mynativelib@current" ] ,
2020-03-20 18:50:07 +01:00
target : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
windows : {
compile_multilib : "64" ,
} ,
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86 : {
enabled : true ,
} ,
windows_x86_64 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
2020-03-20 18:50:07 +01:00
} ,
} ,
2020-03-02 11:16:35 +01:00
}
` ) ,
checkAllCopyRules ( `
. intermediates / mynativelib / linux_glibc_x86_64_shared / mynativelib . so - > linux_glibc / x86_64 / lib / mynativelib . so
. intermediates / mynativelib / linux_glibc_x86_shared / mynativelib . so - > linux_glibc / x86 / lib / mynativelib . so
. intermediates / mynativelib / windows_x86_64_shared / mynativelib . dll - > windows / x86_64 / lib / mynativelib . dll
` ) ,
)
}
2019-12-11 19:42:17 +01:00
func TestSnapshotWithCcStaticLibrary ( t * testing . T ) {
result := testSdkWithCc ( t , `
2019-12-16 18:43:48 +01:00
module_exports {
name : "myexports" ,
2019-12-11 19:42:17 +01:00
native_static_libs : [ "mynativelib" ] ,
}
cc_library_static {
name : "mynativelib" ,
srcs : [
"Test.cpp" ,
"aidl/foo/bar/Test.aidl" ,
] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2019-12-11 19:42:17 +01:00
aidl : {
export_aidl_headers : true ,
} ,
stl : "none" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "myexports" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2019-12-11 19:42:17 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_static {
name : "mynativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2019-12-11 19:42:17 +01:00
arch : {
arm64 : {
srcs : [ "arm64/lib/mynativelib.a" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl" ] ,
2019-12-11 19:42:17 +01:00
} ,
arm : {
srcs : [ "arm/lib/mynativelib.a" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl" ] ,
2019-12-11 19:42:17 +01:00
} ,
} ,
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2019-11-21 01:39:12 +01:00
. intermediates / mynativelib / android_arm64_armv8 - a_static / mynativelib . a - > arm64 / lib / mynativelib . a
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
. intermediates / mynativelib / android_arm64_armv8 - a_static / gen / aidl / aidl / foo / bar / Test . h - > arm64 / include_gen / mynativelib / android_arm64_armv8 - a_static / gen / aidl / aidl / foo / bar / Test . h
. intermediates / mynativelib / android_arm64_armv8 - a_static / gen / aidl / aidl / foo / bar / BnTest . h - > arm64 / include_gen / mynativelib / android_arm64_armv8 - a_static / gen / aidl / aidl / foo / bar / BnTest . h
. intermediates / mynativelib / android_arm64_armv8 - a_static / gen / aidl / aidl / foo / bar / BpTest . h - > arm64 / include_gen / mynativelib / android_arm64_armv8 - a_static / gen / aidl / aidl / foo / bar / BpTest . h
2019-11-21 01:39:12 +01:00
. intermediates / mynativelib / android_arm_armv7 - a - neon_static / mynativelib . a - > arm / lib / mynativelib . a
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
. intermediates / mynativelib / android_arm_armv7 - a - neon_static / gen / aidl / aidl / foo / bar / Test . h - > arm / include_gen / mynativelib / android_arm_armv7 - a - neon_static / gen / aidl / aidl / foo / bar / Test . h
. intermediates / mynativelib / android_arm_armv7 - a - neon_static / gen / aidl / aidl / foo / bar / BnTest . h - > arm / include_gen / mynativelib / android_arm_armv7 - a - neon_static / gen / aidl / aidl / foo / bar / BnTest . h
. intermediates / mynativelib / android_arm_armv7 - a - neon_static / gen / aidl / aidl / foo / bar / BpTest . h - > arm / include_gen / mynativelib / android_arm_armv7 - a - neon_static / gen / aidl / aidl / foo / bar / BpTest . h
2019-12-11 19:42:17 +01:00
` ) ,
)
}
func TestHostSnapshotWithCcStaticLibrary ( t * testing . T ) {
result := testSdkWithCc ( t , `
2019-12-16 18:43:48 +01:00
module_exports {
name : "myexports" ,
2019-12-11 19:42:17 +01:00
device_supported : false ,
host_supported : true ,
native_static_libs : [ "mynativelib" ] ,
}
cc_library_static {
name : "mynativelib" ,
device_supported : false ,
host_supported : true ,
srcs : [
"Test.cpp" ,
"aidl/foo/bar/Test.aidl" ,
] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2019-12-11 19:42:17 +01:00
aidl : {
export_aidl_headers : true ,
} ,
stl : "none" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "myexports" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2019-12-11 19:42:17 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_static {
2021-02-22 13:13:13 +01:00
name : "mynativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2019-12-11 19:42:17 +01:00
device_supported : false ,
host_supported : true ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2019-12-11 19:42:17 +01:00
srcs : [ "x86_64/lib/mynativelib.a" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl" ] ,
2019-12-11 19:42:17 +01:00
} ,
2020-07-11 05:52:24 +02:00
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2019-12-11 19:42:17 +01:00
srcs : [ "x86/lib/mynativelib.a" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl" ] ,
2019-12-11 19:42:17 +01:00
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2019-12-11 19:42:17 +01:00
cc_prebuilt_library_static {
2021-02-22 13:13:13 +01:00
name : "myexports_mynativelib@current" ,
sdk_member_name : "mynativelib" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2019-12-11 19:42:17 +01:00
device_supported : false ,
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2019-12-11 19:42:17 +01:00
srcs : [ "x86_64/lib/mynativelib.a" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl" ] ,
2019-12-11 19:42:17 +01:00
} ,
2020-07-11 05:52:24 +02:00
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2019-12-11 19:42:17 +01:00
srcs : [ "x86/lib/mynativelib.a" ] ,
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
export_include_dirs : [ "x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl" ] ,
2019-12-11 19:42:17 +01:00
} ,
} ,
}
2019-12-16 18:43:48 +01:00
module_exports_snapshot {
name : "myexports@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2019-12-11 19:42:17 +01:00
device_supported : false ,
host_supported : true ,
2019-12-16 18:43:48 +01:00
native_static_libs : [ "myexports_mynativelib@current" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2019-12-11 19:42:17 +01:00
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2019-12-11 19:42:17 +01:00
. intermediates / mynativelib / linux_glibc_x86_64_static / mynativelib . a - > x86_64 / lib / mynativelib . a
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
. intermediates / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / Test . h - > x86_64 / include_gen / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / Test . h
. intermediates / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / BnTest . h - > x86_64 / include_gen / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / BnTest . h
. intermediates / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / BpTest . h - > x86_64 / include_gen / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / BpTest . h
2019-12-11 19:42:17 +01:00
. intermediates / mynativelib / linux_glibc_x86_static / mynativelib . a - > x86 / lib / mynativelib . a
Fix the snapshot handling of generated headers
Previously, the snapshot handling code did not preserve the directory
structure of generated include directories and instead just copied the
headers into the same module specific directory and added that single
directory to the export_include_dirs (or similar) property.
That had a couple of issues:
* The include directory was repeated in the ..._include_dirs property.
* It did not work when the include directories overlapped.
In the latter case it had a couple of issues:
* Code which compiled fine against the source would not compile against
the prebuilt.
* Header files were duplicated in the output.
e.g. assume the following generated header file structure:
foo/
foo.h
bar/
bar.h
baz/
baz.h
When the sdk snapshot was passed include directories of "foo", "bar" and
headers of "foo/foo.h", "bar/bar.h", "bar/baz/baz.h" it would generate a
snapshot with the structure:
include_gen/
foo.h
bar.h
baz/
baz.h
And:
export_include_dirs: ["include_gen", "include_gen"]
However, when the include directories overlapped and include directories
of "foo", "bar" and "bar/baz" were passed in the directory structure
would be the same and the export_include_dirs would contain 3 usages of
"include_gen".
That meant that source code which used the following would build
against the source (because it would find "baz.h" in the "bar/baz"
include directory) but would fail when built against the prebuilts
because the "include_gen" directory did not contain "baz.h":
#include "baz.h"
This change preserves the input directory structure for generated files
in a similar way to how it does it for source files. So, the snapshot
structure looks something like this:
include_gen/
foo/
foo.h
bar/
bar.h
baz/
baz.h
And:
export_include_dirs: [
"include_gen/foo",
"include_gen/bar",
"include_gen/bar/baz",
],
Bug: 180427921
Test: m nothing
Change-Id: Id69eef8cf5eecd033841d3b7cd0c044a697ce404
2021-02-22 12:35:24 +01:00
. intermediates / mynativelib / linux_glibc_x86_static / gen / aidl / aidl / foo / bar / Test . h - > x86 / include_gen / mynativelib / linux_glibc_x86_static / gen / aidl / aidl / foo / bar / Test . h
. intermediates / mynativelib / linux_glibc_x86_static / gen / aidl / aidl / foo / bar / BnTest . h - > x86 / include_gen / mynativelib / linux_glibc_x86_static / gen / aidl / aidl / foo / bar / BnTest . h
. intermediates / mynativelib / linux_glibc_x86_static / gen / aidl / aidl / foo / bar / BpTest . h - > x86 / include_gen / mynativelib / linux_glibc_x86_static / gen / aidl / aidl / foo / bar / BpTest . h
2019-12-11 19:42:17 +01:00
` ) ,
)
}
2020-02-19 17:19:27 +01:00
2020-03-12 11:24:35 +01:00
func TestSnapshotWithCcLibrary ( t * testing . T ) {
result := testSdkWithCc ( t , `
module_exports {
name : "myexports" ,
native_libs : [ "mynativelib" ] ,
}
cc_library {
name : "mynativelib" ,
srcs : [
"Test.cpp" ,
] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2020-03-12 11:24:35 +01:00
stl : "none" ,
2020-09-07 17:39:22 +02:00
recovery_available : true ,
2020-08-13 20:45:31 +02:00
vendor_available : true ,
2020-03-12 11:24:35 +01:00
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "myexports" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-03-12 11:24:35 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library {
2021-02-22 13:13:13 +01:00
name : "mynativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-08-13 20:45:31 +02:00
vendor_available : true ,
2020-03-12 11:24:35 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-03-12 11:24:35 +01:00
arch : {
arm64 : {
static : {
srcs : [ "arm64/lib/mynativelib.a" ] ,
} ,
shared : {
srcs : [ "arm64/lib/mynativelib.so" ] ,
} ,
} ,
arm : {
static : {
srcs : [ "arm/lib/mynativelib.a" ] ,
} ,
shared : {
srcs : [ "arm/lib/mynativelib.so" ] ,
} ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
// Make sure that the generated sdk_snapshot uses the native_libs property.
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-03-12 11:24:35 +01:00
cc_prebuilt_library {
2021-02-22 13:13:13 +01:00
name : "myexports_mynativelib@current" ,
sdk_member_name : "mynativelib" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-08-13 20:45:31 +02:00
vendor_available : true ,
2020-03-12 11:24:35 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-03-12 11:24:35 +01:00
arch : {
arm64 : {
static : {
srcs : [ "arm64/lib/mynativelib.a" ] ,
} ,
shared : {
srcs : [ "arm64/lib/mynativelib.so" ] ,
} ,
} ,
arm : {
static : {
srcs : [ "arm/lib/mynativelib.a" ] ,
} ,
shared : {
srcs : [ "arm/lib/mynativelib.so" ] ,
} ,
} ,
} ,
}
module_exports_snapshot {
name : "myexports@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-03-12 11:24:35 +01:00
native_libs : [ "myexports_mynativelib@current" ] ,
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2020-03-12 11:24:35 +01:00
. intermediates / mynativelib / android_arm64_armv8 - a_static / mynativelib . a - > arm64 / lib / mynativelib . a
. intermediates / mynativelib / android_arm64_armv8 - a_shared / mynativelib . so - > arm64 / lib / mynativelib . so
. intermediates / mynativelib / android_arm_armv7 - a - neon_static / mynativelib . a - > arm / lib / mynativelib . a
2021-03-21 13:56:33 +01:00
. intermediates / mynativelib / android_arm_armv7 - a - neon_shared / mynativelib . so - > arm / lib / mynativelib . so
` ) ,
// TODO(b/183315522): Remove this and fix the issue.
snapshotTestErrorHandler ( checkSnapshotPreferredWithSource , android . FixtureExpectsAtLeastOneErrorMatchingPattern ( ` \Qunrecognized property "arch.arm.shared.export_include_dirs"\E ` ) ) ,
2020-03-12 11:24:35 +01:00
)
}
2020-02-19 17:19:27 +01:00
func TestHostSnapshotWithMultiLib64 ( t * testing . T ) {
result := testSdkWithCc ( t , `
module_exports {
name : "myexports" ,
device_supported : false ,
host_supported : true ,
target : {
host : {
compile_multilib : "64" ,
} ,
} ,
native_static_libs : [ "mynativelib" ] ,
}
cc_library_static {
name : "mynativelib" ,
device_supported : false ,
host_supported : true ,
srcs : [
"Test.cpp" ,
"aidl/foo/bar/Test.aidl" ,
] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2020-02-19 17:19:27 +01:00
aidl : {
export_aidl_headers : true ,
} ,
stl : "none" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "myexports" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-02-19 17:19:27 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_static {
2021-02-22 13:13:13 +01:00
name : "mynativelib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-02-19 17:19:27 +01:00
device_supported : false ,
host_supported : true ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "64" ,
2021-02-17 13:17:40 +01:00
export_include_dirs : [
"include/myinclude" ,
"include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl" ,
] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-02-19 17:19:27 +01:00
srcs : [ "x86_64/lib/mynativelib.a" ] ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-02-19 17:19:27 +01:00
cc_prebuilt_library_static {
2021-02-22 13:13:13 +01:00
name : "myexports_mynativelib@current" ,
sdk_member_name : "mynativelib" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-02-19 17:19:27 +01:00
device_supported : false ,
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "64" ,
2021-02-17 13:17:40 +01:00
export_include_dirs : [
"include/myinclude" ,
"include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl" ,
] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-02-19 17:19:27 +01:00
srcs : [ "x86_64/lib/mynativelib.a" ] ,
} ,
} ,
}
module_exports_snapshot {
name : "myexports@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-02-19 17:19:27 +01:00
device_supported : false ,
host_supported : true ,
2020-07-10 20:55:36 +02:00
compile_multilib : "64" ,
2021-04-24 12:34:46 +02:00
native_static_libs : [ "myexports_mynativelib@current" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2021-02-22 13:13:13 +01:00
}
` ) ,
2020-02-19 17:19:27 +01:00
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2021-02-17 13:17:40 +01:00
. intermediates / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / Test . h - > include_gen / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / Test . h
. intermediates / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / BnTest . h - > include_gen / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / BnTest . h
. intermediates / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / BpTest . h - > include_gen / mynativelib / linux_glibc_x86_64_static / gen / aidl / aidl / foo / bar / BpTest . h
2020-02-19 17:19:27 +01:00
. intermediates / mynativelib / linux_glibc_x86_64_static / mynativelib . a - > x86_64 / lib / mynativelib . a
` ) ,
)
}
2020-02-21 17:29:57 +01:00
func TestSnapshotWithCcHeadersLibrary ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
native_header_libs : [ "mynativeheaders" ] ,
}
cc_library_headers {
name : "mynativeheaders" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2020-02-21 17:29:57 +01:00
stl : "none" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-02-21 17:29:57 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_headers {
name : "mynativeheaders" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-02-21 17:29:57 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-02-21 17:29:57 +01:00
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2020-02-21 17:29:57 +01:00
` ) ,
)
}
2019-11-19 20:44:10 +01:00
func TestSnapshotWithCcHeadersLibraryAndNativeBridgeSupport ( t * testing . T ) {
result := android . GroupFixturePreparers (
cc . PrepareForTestWithCcDefaultModules ,
PrepareForTestWithSdkBuildComponents ,
ccTestFs . AddToFixture ( ) ,
prepareForTestWithNativeBridgeTarget ,
) . RunTestWithBp ( t , `
sdk {
name : "mysdk" ,
native_header_libs : [ "mynativeheaders" ] ,
traits : {
native_bridge_support : [ "mynativeheaders" ] ,
} ,
}
cc_library_headers {
name : "mynativeheaders" ,
export_include_dirs : [ "myinclude" ] ,
stl : "none" ,
system_shared_libs : [ ] ,
native_bridge_supported : true ,
}
` )
CheckSnapshot ( t , result , "mysdk" , "" ,
checkUnversionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_headers {
name : "mynativeheaders" ,
prefer : false ,
visibility : [ "//visibility:public" ] ,
apex_available : [ "//apex_available:platform" ] ,
native_bridge_supported : true ,
stl : "none" ,
compile_multilib : "both" ,
system_shared_libs : [ ] ,
export_include_dirs : [ "include/myinclude" ] ,
}
` ) ,
checkAllCopyRules ( `
myinclude / Test . h - > include / myinclude / Test . h
` ) ,
)
}
// TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties verifies that when a
// module that has different output files for a native bridge target requests the native bridge
// variants are copied into the sdk snapshot that it reports an error.
func TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties ( t * testing . T ) {
android . GroupFixturePreparers (
cc . PrepareForTestWithCcDefaultModules ,
PrepareForTestWithSdkBuildComponents ,
ccTestFs . AddToFixture ( ) ,
prepareForTestWithNativeBridgeTarget ,
) . ExtendWithErrorHandler ( android . FixtureExpectsAtLeastOneErrorMatchingPattern (
` \ QArchitecture variant "arm64_native_bridge" of sdk member "mynativeheaders" has properties distinct from other variants ; this is not yet supported . The properties are :
export_include_dirs : [
"arm64_native_bridge/include/myinclude_nativebridge" ,
"arm64_native_bridge/include/myinclude" ,
] , \ E ` ) ) .
RunTestWithBp ( t , `
sdk {
name : "mysdk" ,
native_header_libs : [ "mynativeheaders" ] ,
traits : {
native_bridge_support : [ "mynativeheaders" ] ,
} ,
}
cc_library_headers {
name : "mynativeheaders" ,
export_include_dirs : [ "myinclude" ] ,
stl : "none" ,
system_shared_libs : [ ] ,
native_bridge_supported : true ,
target : {
native_bridge : {
export_include_dirs : [ "myinclude_nativebridge" ] ,
} ,
} ,
}
` )
}
2021-09-06 11:28:34 +02:00
func TestSnapshotWithCcHeadersLibraryAndImageVariants ( t * testing . T ) {
testImageVariant := func ( t * testing . T , property , trait string ) {
result := android . GroupFixturePreparers (
cc . PrepareForTestWithCcDefaultModules ,
PrepareForTestWithSdkBuildComponents ,
ccTestFs . AddToFixture ( ) ,
) . RunTestWithBp ( t , fmt . Sprintf ( `
sdk {
name : "mysdk" ,
native_header_libs : [ "mynativeheaders" ] ,
traits : {
% s : [ "mynativeheaders" ] ,
} ,
}
cc_library_headers {
name : "mynativeheaders" ,
export_include_dirs : [ "myinclude" ] ,
stl : "none" ,
system_shared_libs : [ ] ,
% s : true ,
}
` , trait , property ) )
CheckSnapshot ( t , result , "mysdk" , "" ,
checkUnversionedAndroidBpContents ( fmt . Sprintf ( `
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_headers {
name : "mynativeheaders" ,
prefer : false ,
visibility : [ "//visibility:public" ] ,
apex_available : [ "//apex_available:platform" ] ,
% s : true ,
stl : "none" ,
compile_multilib : "both" ,
system_shared_libs : [ ] ,
export_include_dirs : [ "include/myinclude" ] ,
}
` , property ) ) ,
checkAllCopyRules ( `
myinclude / Test . h - > include / myinclude / Test . h
` ) ,
)
}
2021-09-15 18:25:10 +02:00
t . Run ( "ramdisk" , func ( t * testing . T ) {
testImageVariant ( t , "ramdisk_available" , "ramdisk_image_required" )
} )
2021-09-06 11:28:34 +02:00
t . Run ( "recovery" , func ( t * testing . T ) {
testImageVariant ( t , "recovery_available" , "recovery_image_required" )
} )
}
2020-02-21 17:29:57 +01:00
func TestHostSnapshotWithCcHeadersLibrary ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
device_supported : false ,
host_supported : true ,
native_header_libs : [ "mynativeheaders" ] ,
}
cc_library_headers {
name : "mynativeheaders" ,
device_supported : false ,
host_supported : true ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2020-02-21 17:29:57 +01:00
stl : "none" ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-02-21 17:29:57 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_headers {
2021-02-22 13:13:13 +01:00
name : "mynativeheaders" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-02-21 17:29:57 +01:00
device_supported : false ,
host_supported : true ,
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2020-02-21 17:29:57 +01:00
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-02-21 17:29:57 +01:00
cc_prebuilt_library_headers {
2021-02-22 13:13:13 +01:00
name : "mysdk_mynativeheaders@current" ,
sdk_member_name : "mynativeheaders" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-02-21 17:29:57 +01:00
device_supported : false ,
host_supported : true ,
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2020-02-21 17:29:57 +01:00
}
sdk_snapshot {
name : "mysdk@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-02-21 17:29:57 +01:00
device_supported : false ,
host_supported : true ,
native_header_libs : [ "mysdk_mynativeheaders@current" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2020-02-21 17:29:57 +01:00
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2020-02-21 17:29:57 +01:00
` ) ,
)
}
2020-03-02 11:16:35 +01:00
func TestDeviceAndHostSnapshotWithCcHeadersLibrary ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
host_supported : true ,
native_header_libs : [ "mynativeheaders" ] ,
}
cc_library_headers {
name : "mynativeheaders" ,
host_supported : true ,
stl : "none" ,
2021-02-22 12:50:04 +01:00
export_system_include_dirs : [ "myinclude" ] ,
2020-03-02 11:16:35 +01:00
target : {
android : {
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude-android" ] ,
2020-03-02 11:16:35 +01:00
} ,
host : {
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude-host" ] ,
2020-03-02 11:16:35 +01:00
} ,
} ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-03-02 11:16:35 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_headers {
2021-02-22 13:13:13 +01:00
name : "mynativeheaders" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-02 11:16:35 +01:00
host_supported : true ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_system_include_dirs : [ "common_os/include/myinclude" ] ,
2020-03-02 11:16:35 +01:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-03-02 11:16:35 +01:00
android : {
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "android/include/myinclude-android" ] ,
2020-03-02 11:16:35 +01:00
} ,
linux_glibc : {
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "linux_glibc/include/myinclude-host" ] ,
2020-03-02 11:16:35 +01:00
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
enabled : true ,
} ,
2020-03-02 11:16:35 +01:00
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-03-02 11:16:35 +01:00
cc_prebuilt_library_headers {
2021-02-22 13:13:13 +01:00
name : "mysdk_mynativeheaders@current" ,
sdk_member_name : "mynativeheaders" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-02 11:16:35 +01:00
host_supported : true ,
2020-03-11 19:42:08 +01:00
stl : "none" ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_system_include_dirs : [ "common_os/include/myinclude" ] ,
2020-03-02 11:16:35 +01:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-03-02 11:16:35 +01:00
android : {
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "android/include/myinclude-android" ] ,
2020-03-02 11:16:35 +01:00
} ,
linux_glibc : {
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "linux_glibc/include/myinclude-host" ] ,
2020-03-02 11:16:35 +01:00
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
enabled : true ,
} ,
2020-03-02 11:16:35 +01:00
} ,
}
sdk_snapshot {
name : "mysdk@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-03-02 11:16:35 +01:00
host_supported : true ,
native_header_libs : [ "mysdk_mynativeheaders@current" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2020-03-02 11:16:35 +01:00
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > common_os / include / myinclude / Test . h
myinclude - android / AndroidTest . h - > android / include / myinclude - android / AndroidTest . h
myinclude - host / HostTest . h - > linux_glibc / include / myinclude - host / HostTest . h
2020-03-02 11:16:35 +01:00
` ) ,
)
}
2020-03-24 02:19:52 +01:00
func TestSystemSharedLibPropagation ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
2021-07-22 20:39:44 +02:00
native_shared_libs : [ "sslnil" , "sslempty" , "sslnonempty" ] ,
2020-03-24 02:19:52 +01:00
}
cc_library {
name : "sslnil" ,
host_supported : true ,
}
cc_library {
name : "sslempty" ,
system_shared_libs : [ ] ,
}
cc_library {
name : "sslnonempty" ,
system_shared_libs : [ "sslnil" ] ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-03-24 02:19:52 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
name : "sslnil" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-03-24 02:19:52 +01:00
arch : {
arm64 : {
srcs : [ "arm64/lib/sslnil.so" ] ,
} ,
arm : {
srcs : [ "arm/lib/sslnil.so" ] ,
} ,
} ,
}
cc_prebuilt_library_shared {
name : "sslempty" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-03-24 02:19:52 +01:00
system_shared_libs : [ ] ,
arch : {
arm64 : {
srcs : [ "arm64/lib/sslempty.so" ] ,
} ,
arm : {
srcs : [ "arm/lib/sslempty.so" ] ,
} ,
} ,
}
cc_prebuilt_library_shared {
name : "sslnonempty" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-03-24 02:19:52 +01:00
system_shared_libs : [ "sslnil" ] ,
arch : {
arm64 : {
srcs : [ "arm64/lib/sslnonempty.so" ] ,
} ,
arm : {
srcs : [ "arm/lib/sslnonempty.so" ] ,
} ,
} ,
}
2021-07-22 20:39:44 +02:00
` ) )
2020-03-24 02:19:52 +01:00
result = testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
host_supported : true ,
2021-07-22 20:39:44 +02:00
native_shared_libs : [ "sslvariants" ] ,
2020-03-24 02:19:52 +01:00
}
cc_library {
name : "sslvariants" ,
host_supported : true ,
target : {
android : {
system_shared_libs : [ ] ,
} ,
} ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-03-24 02:19:52 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "sslvariants" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-24 02:19:52 +01:00
host_supported : true ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-03-24 02:19:52 +01:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-03-24 02:19:52 +01:00
android : {
system_shared_libs : [ ] ,
} ,
android_arm64 : {
srcs : [ "android/arm64/lib/sslvariants.so" ] ,
} ,
android_arm : {
srcs : [ "android/arm/lib/sslvariants.so" ] ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-24 02:19:52 +01:00
srcs : [ "linux_glibc/x86_64/lib/sslvariants.so" ] ,
} ,
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-24 02:19:52 +01:00
srcs : [ "linux_glibc/x86/lib/sslvariants.so" ] ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-03-24 02:19:52 +01:00
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "mysdk_sslvariants@current" ,
sdk_member_name : "sslvariants" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-03-24 02:19:52 +01:00
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-03-24 02:19:52 +01:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-03-24 02:19:52 +01:00
android : {
system_shared_libs : [ ] ,
} ,
android_arm64 : {
srcs : [ "android/arm64/lib/sslvariants.so" ] ,
} ,
android_arm : {
srcs : [ "android/arm/lib/sslvariants.so" ] ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-24 02:19:52 +01:00
srcs : [ "linux_glibc/x86_64/lib/sslvariants.so" ] ,
} ,
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-03-24 02:19:52 +01:00
srcs : [ "linux_glibc/x86/lib/sslvariants.so" ] ,
} ,
} ,
}
sdk_snapshot {
name : "mysdk@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-03-24 02:19:52 +01:00
host_supported : true ,
2021-07-22 20:39:44 +02:00
native_shared_libs : [ "mysdk_sslvariants@current" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2020-03-24 02:19:52 +01:00
}
` ) )
}
2020-04-01 21:38:01 +02:00
func TestStubsLibrary ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
native_shared_libs : [ "stubslib" ] ,
}
2020-04-21 21:45:35 +02:00
cc_library {
name : "internaldep" ,
}
2020-04-01 21:38:01 +02:00
cc_library {
name : "stubslib" ,
2020-04-21 21:45:35 +02:00
shared_libs : [ "internaldep" ] ,
2020-04-01 21:38:01 +02:00
stubs : {
symbol_file : "some/where/stubslib.map.txt" ,
versions : [ "1" , "2" , "3" ] ,
} ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-04-01 21:38:01 +02:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
name : "stubslib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-04-01 21:38:01 +02:00
stubs : {
2020-09-24 17:53:04 +02:00
versions : [
"1" ,
"2" ,
"3" ,
"current" is implicitly added to stubs.versions
So far, when a library `libfoo` has `stubs.versions: ["10", "11"]`, then
`shared_libs: ["libfoo"]` is linked to the version 11 of the stub.
This requires the author of `libfoo` to manually update the property
whenever a new version is introduced. Otherwise, clients are not able
to use the newly added APIs because the latest stub is for an old
version.
This change eliminates the need for manual updating. "current" version
is always implicitly added to `stubs.versions`. It is added even when
nothing is set on the property, if `stubs.symbol_file` is set. i.e.
```
cc_library {
name: "libfoo",
stubs: {
symbol_file: "libfoo.map.txt",
// no versions: [...] needed
},
}
cc_library {
name: "a_client",
shared_libs: ["libfoo"],
apex_available: ["myapex"],
min_sdk_version: "29",
}
apex {
name: "myapex",
native_shared_libraries: ["a_client"],
min_sdk_version: "29",
}
```
`a_client` links to the "current" stub of `libfoo` that has all symbols
shown in the map file.
Note that, above doesn't mean that the client has unlimited access to
APIs that are introduced even after the min_sdk_version of the client
(29 in this example). The use of such APIs still has to be guarded with
`__builtin_available` check.
Bug: N/A
Test: m
Change-Id: I70bb1600c18e74d36c6b24c3569d2149f02aaf96
2021-03-17 12:21:35 +01:00
"current" ,
2020-09-24 17:53:04 +02:00
] ,
2020-04-01 21:38:01 +02:00
} ,
arch : {
arm64 : {
srcs : [ "arm64/lib/stubslib.so" ] ,
} ,
arm : {
srcs : [ "arm/lib/stubslib.so" ] ,
} ,
} ,
}
` ) )
}
2020-05-04 16:32:08 +02:00
func TestDeviceAndHostSnapshotWithStubsLibrary ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
host_supported : true ,
native_shared_libs : [ "stubslib" ] ,
}
cc_library {
name : "internaldep" ,
host_supported : true ,
}
cc_library {
name : "stubslib" ,
host_supported : true ,
shared_libs : [ "internaldep" ] ,
stubs : {
symbol_file : "some/where/stubslib.map.txt" ,
versions : [ "1" , "2" , "3" ] ,
} ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-05-04 16:32:08 +02:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "stubslib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-05-04 16:32:08 +02:00
host_supported : true ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-05-04 16:32:08 +02:00
stubs : {
2020-09-24 17:53:04 +02:00
versions : [
"1" ,
"2" ,
"3" ,
"current" is implicitly added to stubs.versions
So far, when a library `libfoo` has `stubs.versions: ["10", "11"]`, then
`shared_libs: ["libfoo"]` is linked to the version 11 of the stub.
This requires the author of `libfoo` to manually update the property
whenever a new version is introduced. Otherwise, clients are not able
to use the newly added APIs because the latest stub is for an old
version.
This change eliminates the need for manual updating. "current" version
is always implicitly added to `stubs.versions`. It is added even when
nothing is set on the property, if `stubs.symbol_file` is set. i.e.
```
cc_library {
name: "libfoo",
stubs: {
symbol_file: "libfoo.map.txt",
// no versions: [...] needed
},
}
cc_library {
name: "a_client",
shared_libs: ["libfoo"],
apex_available: ["myapex"],
min_sdk_version: "29",
}
apex {
name: "myapex",
native_shared_libraries: ["a_client"],
min_sdk_version: "29",
}
```
`a_client` links to the "current" stub of `libfoo` that has all symbols
shown in the map file.
Note that, above doesn't mean that the client has unlimited access to
APIs that are introduced even after the min_sdk_version of the client
(29 in this example). The use of such APIs still has to be guarded with
`__builtin_available` check.
Bug: N/A
Test: m
Change-Id: I70bb1600c18e74d36c6b24c3569d2149f02aaf96
2021-03-17 12:21:35 +01:00
"current" ,
2020-09-24 17:53:04 +02:00
] ,
2020-05-04 16:32:08 +02:00
} ,
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-05-04 16:32:08 +02:00
android_arm64 : {
srcs : [ "android/arm64/lib/stubslib.so" ] ,
} ,
android_arm : {
srcs : [ "android/arm/lib/stubslib.so" ] ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-05-04 16:32:08 +02:00
srcs : [ "linux_glibc/x86_64/lib/stubslib.so" ] ,
} ,
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-05-04 16:32:08 +02:00
srcs : [ "linux_glibc/x86/lib/stubslib.so" ] ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-05-04 16:32:08 +02:00
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "mysdk_stubslib@current" ,
sdk_member_name : "stubslib" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-05-04 16:32:08 +02:00
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-05-04 16:32:08 +02:00
stubs : {
2020-09-24 17:53:04 +02:00
versions : [
"1" ,
"2" ,
"3" ,
"current" is implicitly added to stubs.versions
So far, when a library `libfoo` has `stubs.versions: ["10", "11"]`, then
`shared_libs: ["libfoo"]` is linked to the version 11 of the stub.
This requires the author of `libfoo` to manually update the property
whenever a new version is introduced. Otherwise, clients are not able
to use the newly added APIs because the latest stub is for an old
version.
This change eliminates the need for manual updating. "current" version
is always implicitly added to `stubs.versions`. It is added even when
nothing is set on the property, if `stubs.symbol_file` is set. i.e.
```
cc_library {
name: "libfoo",
stubs: {
symbol_file: "libfoo.map.txt",
// no versions: [...] needed
},
}
cc_library {
name: "a_client",
shared_libs: ["libfoo"],
apex_available: ["myapex"],
min_sdk_version: "29",
}
apex {
name: "myapex",
native_shared_libraries: ["a_client"],
min_sdk_version: "29",
}
```
`a_client` links to the "current" stub of `libfoo` that has all symbols
shown in the map file.
Note that, above doesn't mean that the client has unlimited access to
APIs that are introduced even after the min_sdk_version of the client
(29 in this example). The use of such APIs still has to be guarded with
`__builtin_available` check.
Bug: N/A
Test: m
Change-Id: I70bb1600c18e74d36c6b24c3569d2149f02aaf96
2021-03-17 12:21:35 +01:00
"current" ,
2020-09-24 17:53:04 +02:00
] ,
2020-05-04 16:32:08 +02:00
} ,
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-05-04 16:32:08 +02:00
android_arm64 : {
srcs : [ "android/arm64/lib/stubslib.so" ] ,
} ,
android_arm : {
srcs : [ "android/arm/lib/stubslib.so" ] ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-05-04 16:32:08 +02:00
srcs : [ "linux_glibc/x86_64/lib/stubslib.so" ] ,
} ,
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-05-04 16:32:08 +02:00
srcs : [ "linux_glibc/x86/lib/stubslib.so" ] ,
} ,
} ,
}
sdk_snapshot {
name : "mysdk@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-05-04 16:32:08 +02:00
host_supported : true ,
native_shared_libs : [ "mysdk_stubslib@current" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2020-05-04 16:32:08 +02:00
}
` ) )
}
2020-06-17 23:52:25 +02:00
func TestUniqueHostSoname ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
host_supported : true ,
native_shared_libs : [ "mylib" ] ,
}
cc_library {
name : "mylib" ,
host_supported : true ,
unique_host_soname : true ,
}
` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-06-17 23:52:25 +02:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "mylib" ,
prefer : false ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-06-17 23:52:25 +02:00
host_supported : true ,
unique_host_soname : true ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-06-17 23:52:25 +02:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-06-17 23:52:25 +02:00
android_arm64 : {
srcs : [ "android/arm64/lib/mylib.so" ] ,
} ,
android_arm : {
srcs : [ "android/arm/lib/mylib.so" ] ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-06-17 23:52:25 +02:00
srcs : [ "linux_glibc/x86_64/lib/mylib-host.so" ] ,
} ,
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-06-17 23:52:25 +02:00
srcs : [ "linux_glibc/x86/lib/mylib-host.so" ] ,
} ,
} ,
}
2021-02-22 13:13:13 +01:00
` ) ,
checkVersionedAndroidBpContents ( `
// This is auto-generated. DO NOT EDIT.
2020-06-17 23:52:25 +02:00
cc_prebuilt_library_shared {
2021-02-22 13:13:13 +01:00
name : "mysdk_mylib@current" ,
sdk_member_name : "mylib" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-06-17 23:52:25 +02:00
host_supported : true ,
2021-02-22 13:13:13 +01:00
installable : false ,
2020-06-17 23:52:25 +02:00
unique_host_soname : true ,
2020-07-10 01:14:03 +02:00
compile_multilib : "both" ,
2020-06-17 23:52:25 +02:00
target : {
2020-07-11 05:52:24 +02:00
host : {
enabled : false ,
} ,
2020-06-17 23:52:25 +02:00
android_arm64 : {
srcs : [ "android/arm64/lib/mylib.so" ] ,
} ,
android_arm : {
srcs : [ "android/arm/lib/mylib.so" ] ,
} ,
linux_glibc_x86_64 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-06-17 23:52:25 +02:00
srcs : [ "linux_glibc/x86_64/lib/mylib-host.so" ] ,
} ,
linux_glibc_x86 : {
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
enabled : true ,
2020-06-17 23:52:25 +02:00
srcs : [ "linux_glibc/x86/lib/mylib-host.so" ] ,
} ,
} ,
}
sdk_snapshot {
name : "mysdk@current" ,
2020-09-29 17:00:55 +02:00
visibility : [ "//visibility:public" ] ,
2020-06-17 23:52:25 +02:00
host_supported : true ,
native_shared_libs : [ "mysdk_mylib@current" ] ,
2020-07-11 05:52:24 +02:00
target : {
host : {
enabled : false ,
} ,
Enable sdk and sdk members in os_arch granularity
This amends Idad7ef138cdbcbd209d390bf6c10ca8365d4619f. With the change,
when there is a member that returns IsHostOsDependent() == true,
the sdk having the member and the member itself are disable for host and
only the os that the member supports is explicitly enabled.
However, that change will cause a problem when we add the support for
the linux_bionic_arm64 target. The target is not enabled when building
sdk snapshots. The only linux_bionic target that is enabled is
'linux_bionic_x86_64'. However, since the granularity is os which is
linux_bionic, the snapshot is generated as follows.
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic: {
enabled: true,
},
linux_bionic_x86_64: {
srcs: ["x86_64/bin/..."],
},
// no srcs for linux_bionic_arm64
},
}
Above is a problem for linux_bionic_arm64 target because the target is
enabled (via linux_bionic.enabled: true), but srcs is not provided.
To fix the problem, the enabling of a target is done in a target
(os_arch) granularity, rather than os granularity. For example, above
now becomes ...
cc_prebuilt_binary {
target: {
host: {
enabled: false,
},
linux_bionic_x86_64: {
enabled: true,
srcs: ["x86_64/bin/..."],
},
},
}
Only the targets that the snapshot actually can provide srcs are enabled
and the rest of the host targets are disabled.
Bug: 159685774
Test: m nothing
Test: build/soong/scripts/build-aml-prebuilts.sh
runtime-module-host-exports
Change-Id: Ibca48c40f6dc4628b5f4bfa4ceb68ebe0973cc81
2020-10-19 15:47:34 +02:00
linux_glibc_x86_64 : {
enabled : true ,
} ,
linux_glibc_x86 : {
2020-07-11 05:52:24 +02:00
enabled : true ,
} ,
} ,
2020-06-17 23:52:25 +02:00
}
` ) ,
checkAllCopyRules ( `
. intermediates / mylib / android_arm64_armv8 - a_shared / mylib . so - > android / arm64 / lib / mylib . so
. intermediates / mylib / android_arm_armv7 - a - neon_shared / mylib . so - > android / arm / lib / mylib . so
. intermediates / mylib / linux_glibc_x86_64_shared / mylib - host . so - > linux_glibc / x86_64 / lib / mylib - host . so
. intermediates / mylib / linux_glibc_x86_shared / mylib - host . so - > linux_glibc / x86 / lib / mylib - host . so
` ) ,
)
}
2020-10-29 00:38:33 +01:00
func TestNoSanitizerMembers ( t * testing . T ) {
result := testSdkWithCc ( t , `
sdk {
name : "mysdk" ,
native_shared_libs : [ "mynativelib" ] ,
}
cc_library_shared {
name : "mynativelib" ,
srcs : [ "Test.cpp" ] ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "myinclude" ] ,
2020-10-29 00:38:33 +01:00
arch : {
arm64 : {
export_system_include_dirs : [ "arm64/include" ] ,
sanitize : {
hwaddress : true ,
} ,
} ,
} ,
}
` )
2021-03-21 13:56:33 +01:00
// Mixing the snapshot with the source (irrespective of which one is preferred) causes a problem
// due to missing variants.
// TODO(b/183204176): Remove this and fix the cause.
snapshotWithSourceErrorHandler := android . FixtureExpectsAtLeastOneErrorMatchingPattern ( ` \QReplaceDependencies could not find identical variant { os:android,image:,arch:arm64_armv8-a,sdk:,link:shared,version:} for module mynativelib\E ` )
2021-03-12 13:19:43 +01:00
CheckSnapshot ( t , result , "mysdk" , "" ,
2021-02-22 13:13:13 +01:00
checkUnversionedAndroidBpContents ( `
2020-10-29 00:38:33 +01:00
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
name : "mynativelib" ,
prefer : false ,
visibility : [ "//visibility:public" ] ,
2020-11-03 01:11:09 +01:00
apex_available : [ "//apex_available:platform" ] ,
2020-10-29 00:38:33 +01:00
compile_multilib : "both" ,
2021-02-22 12:50:04 +01:00
export_include_dirs : [ "include/myinclude" ] ,
2020-10-29 00:38:33 +01:00
arch : {
arm64 : {
export_system_include_dirs : [ "arm64/include/arm64/include" ] ,
} ,
arm : {
srcs : [ "arm/lib/mynativelib.so" ] ,
} ,
} ,
}
` ) ,
checkAllCopyRules ( `
2021-02-22 12:50:04 +01:00
myinclude / Test . h - > include / myinclude / Test . h
2020-10-29 00:38:33 +01:00
arm64 / include / Arm64Test . h - > arm64 / include / arm64 / include / Arm64Test . h
2021-03-21 13:56:33 +01:00
. intermediates / mynativelib / android_arm_armv7 - a - neon_shared / mynativelib . so - > arm / lib / mynativelib . so
` ) ,
snapshotTestErrorHandler ( checkSnapshotWithSourcePreferred , snapshotWithSourceErrorHandler ) ,
snapshotTestErrorHandler ( checkSnapshotPreferredWithSource , snapshotWithSourceErrorHandler ) ,
2020-10-29 00:38:33 +01:00
)
}