The diff_flags make the ABI checker ignore the weak symbol difference
caused by PGO.
Test: make libc++.vendor
Bug: 230076879
Change-Id: Ifff053fd9a1411cbe73ab48359ffa6f49bec4490
Export the libc++ headers for inclusion in the musl sysroot so that
the clang runtimes can link against them.
Bug: 215802826
Test: musl llvm build
Change-Id: Ia661da7ad7158e09b3e956ab93159e3e42855424
This is used by odrefresh, which needs to do many filesystem
operations. It is only used as a static library.
Bug: 205276874
Test: m nothing
Change-Id: Id4cd9e2674d32b48ab82d88ac3acb93d37ca8627
We're still working on it, but having a bug that's already been closed
in the comment makes it look like this is actually ready.
Bug: http://b/175635923
Test: N/A
Change-Id: Ied229bc423fc4550d2e235acd45ebc38d7dcd507
"vendor_available" modules were available to product modules.
However, not all "vendor_available" modules are required to be
available to product modules. Some modules want to be available only
to product modules but not vendor modules.
To cover the requirement, we separate "product_available" from
"vendor_available".
"vendor_available" will not provide product available module.
Bug: 150902910
Test: build
Change-Id: I8e85af2a4e33836092816d38d9bbd7b43dd87d77
Bug: http://b/116784799
This is set globally for all 32-bit Windows compilations in build/soong.
Test: go/android-llvm-windows-testing
Change-Id: I0ff6c21942929e92f790ee7dbcfad00309a7aec6
Modules contributing mainline modules (APK/APEX) should set
min_sdk_version as well as apex_available.
"apex_inherit" is a special alias to represent "the minimum of all
that the apexes require".
For now setting min_sdk_version doesn't change build outputs.
But build-time checks will be added soon.
Bug: 152655956
Test: m
Change-Id: I23cb55a3a17ac242e7f599fe574ca30074b43506
The marked library(ies) were available to the APEXes via the hand-written
whitelist in build/soong/apex/apex.go. Trying to remove the whitelist
by adding apex_available property to the Android.bp of the libraries.
Bug: 150999716
Test: m
Change-Id: I60e1ae6fa837772c2682d4a26ea34bd80e69bc9e
-nostdinc++ is already passed by the build system for stl: "none".
-nodefaultlibs was prevoiusly passed by the build system, but has
been replaced with -nostdlib++ to avoid having to manually pass
all the other default libraries on the command line. Passing
-nodefaultlibs here causes libc++ to no longer link against libc.
Test: m checkbuild
Change-Id: Ib3392d545f68be594800fe806ecd365f830d201e
The library can be used to build binaries
for translated architectures.
Bug: http://b/77159578
Test: make
Change-Id: I3c41a52d599bae2c50feb937267295d9ea8844ca
This is for init, which is recovery available, to use std::filesystem.
Bug: 126493225
Test: build pass
Change-Id: I4012f99bcfacf57e45f9f7fd04f76311c279a914
run_tests.py had bitrotted since it was last run (e.g. it used perl
which is now not allowed and the warning flags were out of date).
I changed it to use a different way of extracting the compile command
which is based on Soong instead of makefiles. This way is also
compatible with multiple build directories since it doesn't clobber
the source directory and doesn't require OUT_DIR == out.
This also changes run_tests.py to run the libcxxabi tests as well,
since they can be run using the same mechanism.
Bug: 120510768
Test: ./run_tests.py --bitness 32
Test: ./run_tests.py --bitness 64
Test: ./run_tests.py --bitness 64 --host
Change-Id: Id30129161f8519fa6c1bc106727326373ca9ab82
- Use Win32 threads. MinGW pthreads throws an error when building
libcxx since it's pthread_mutex_initializer is not constant (needs a
cast).
- Disable visibility annotations for libcxx and libcxxabi since we are
only going to support these as static libraries.
- Build sources for Windows platform support.
- Use SjLj exceptions for 32-bit. libgcc_eh implements SjLj exception
model for 32-bit.
- Undefine WIN32_LEAN_AND_MEAN macro. libcxx sources define them where
necessary.
Test: Build and test Windows binaries under Wine.
Change-Id: I76a440ff5d71eb5a3b7d57dd97e742a458ffbe16
Libraries that are direct or indirect dependencies of modules installed
to recovery partition (e.g. toybox) are marked as recovery_available:
true. This allows a recovery variant of the lib is created when it is
depended by other recovery or recovery_available modules.
Bug: 67916654
Bug: 64960723
Test: m -j
Change-Id: I3dbc481be7ec367530adb57b1f4c92ce4b0db31a
This reverts commit b5b70be878.
If __unix__ is defined on mips/mips64 (other CL under the same topic),
we will avoid warnings such as:
* external/libcxx/src/thread.cpp:105:9: error: hardware_concurrency
not yet implemented
Test: successful build and boot aosp_mips-eng
Test: successful build and boot aosp_mips64-eng
MIPS triggers some warnings in libc++ such as:
external/libcxx/src/thread.cpp:105:9: error: hardware_concurrency not yet implemented [-Werror,-W#warnings]
Test: external/clang/build.py
Change-Id: I5ccb4ffe902e29cf74de220f9610da13b1070dc1
In the future, target.linux will apply to all targets running a linux kernel
(android, linux_glibc, linux_bionic). So move all current users to the specific
linux_glibc.
There will be another cleanup pass later that will move some instances back to
target.linux if the properties should be shared with target.android and
target.linux_bionic, but target.linux needs to be removed first.
Test: out/soong/build.ninja identical before/after
Change-Id: Id07a511f47db522d27d18ea906bc086cf2aa51e4
Exempt-From-Owner-Approval: build system cleanup
libdl is part of system_shared_libs now. -ldl -lpthread -lm are now defaults
for host_ldlibs on Linux and Darwin. -lrt is a default for host_ldlibs on
Linux.
Test: m host
Change-Id: I296fe8b93fdc8edd623381a3983ba26534b45af2
Exempt-From-Owner-Approval: build system cleanup
clang is the default compiler since Android nougat
Test: mma & verified it´s still build with clang
Change-Id: I4d251ac8b0365165653351e254991d4064c74dc4
Signed-off-by: Lennart Wieboldt <lennart.1997@gmx.de>
As a VNDK/VNDK-SP module, Android.bp must have 'vndk' tag as well
as 'vendor_available: true'.
For a VNDK module, the 'vndk' tag has 'enabled: true'.
It will be installed system/lib(64)/vndk as a vendor variant.
For a VNDK-SP module, the 'vndk' tag has
'support_system_process: true' as well as 'enabled: true'.
It will be installed system/lib(64)/vndk-sp as a vendor variant.
Bug: 63866913
Test: build and boot with BOARD_VNDK_VERSION=current
Merged-In: I8df3b9ec1a867fdbaac8cf348da4cfd56433435b
Change-Id: I8df3b9ec1a867fdbaac8cf348da4cfd56433435b
(cherry picked from commit 82c0df65eb)
By setting vendor_available, the following may become true:
* a prebuilt library from this release may be used at runtime by
in a later releasse (by vendor code compiled against this release).
so this library shouldn't depend on runtime state that may change
in the future.
* this library may be loaded twice into a single process (potentially
an old version and a newer version). The symbols will be isolated
using linker namespaces, but this may break assumptions about 1
library in 1 process (your singletons will run twice).
Background:
This means that these modules may be built and installed twice --
once for the system partition and once for the vendor partition. The
system version will build just like today, and will be used by the
framework components on /system. The vendor version will build
against a reduced set of exports and libraries -- similar to, but
separate from, the NDK. This means that all your dependencies must
also mark vendor_available.
At runtime, /system binaries will load libraries from /system/lib*,
while /vendor binaries will load libraries from /vendor/lib*. There
are some exceptions in both directions -- bionic(libc,etc) and liblog
are always loaded from /system. And SP-HALs (OpenGL, etc) may load
/vendor code into /system processes, but the dependencies of those
libraries will load from /vendor until it reaches a library that's
always on /system. In the SP-HAL case, if both framework and vendor
libraries depend on a library of the same name, both versions will be
loaded, but they will be isolated from each other.
It's possible to compile differently -- reducing your source files,
exporting different include directories, etc. For details see:
https://android-review.googlesource.com/368372
None of this is enabled unless the device opts into the system/vendor
split with BOARD_VNDK_VERSION := current.
Bug: 36426473
Bug: 36079834
Test: Android-aosp_arm.mk is the same before/after
Test: build.ninja is the same before/after
Test: build-aosp_arm.ninja is the same before/after
Test: attempt to compile with BOARD_VNDK_VERSION := current
Change-Id: I5aa9e3463c53a2c13110d6fffb61a2bbc09892f2
Darwin seems to have trouble with weak symbols, adding
-Wl,-undefined,dynamic_lookup moves the problem to runtime where it
seems to work.
Test: aidl-cpp builds and starts
Change-Id: Ia8553abd5a9b61ed65dd4b064e57d30ad2418263
There used to be a check for `__has_include(<cxxabi.h>)`, but it
was removed because it is a clang extension. This adds
-DLIBCXX_BUILDING_LIBCXXABI to the mk and bp files to fix this.
Change-Id: Ife2f93ace8c2766c0140fba88bf74a941ed8e57e
prebuilts/sdk/tools/.../libc++.so no longer gets installed, so it
doesn't conflict with this definition.
Change-Id: I832aca3898c47ad97b29222c2728cfe2173d56df