I had some free time this morning and took a long hard look at all four of these ‘EULA’ problems. I actually think we are good to go, and here’s why:
- As I thought previously, Google/AOSP is not trying to change clang or these build tools, but that they have to pick a specific version in the space/time continuum to make sure the builds always work the same, which is why they fork their own version. They do cherry pick features, both up and down stream for their clang/build tools. But now we have definitive mention of that which you can read.
https://android.googlesource.com/toolchain/llvm_android/+/refs/heads/main/README.md
- Google’s lld license can be found here, and is Apache 2.0.
https://android.googlesource.com/toolchain/lld/+/refs/heads/main/LICENSE.TXT
- Google’s LibLLVM_android latest build source code can be found here, and it includes “MODULE_LICENSE” files, all of which are Apache 2.0, MIT, and BSD.
https://android.googlesource.com/toolchain/llvm_android/+/refs/heads/llvm-r510928
- Google’s renderscript can be viewed here, and each file has a license statement at the top of Apache2.0.
https://android.googlesource.com/platform/frameworks/base/+/master/rs/java/android/renderscript
- Google’s libclang_android building all takes part in the android clang/libllvm building, which we already discussed above, but you can read the build instructions here:
https://android.googlesource.com/toolchain/llvm_android/+/refs/heads/llvm-r510928
Interesting to note that in step 4, the prebuilts are downloaded for testing.
-
In all cases, (lld, renderscript, libllvm, libclang) their source code is found inside the Android Open Source Project code, whereas when something is not open source, Google puts that in a separate repository which is pulled in the manifest.xml file when syncing.
-
@hans is right about renderscript, it is depreciated in Android 12 and onward. However, if our users plan to build for say Android 11, they may want/need it. Especially if they are rebuilding someone else’s previous open source work which may include code that renderscript reads/uses.
I recommend that we press forward, simply removing the EULA statement by replacing it with a blank file prior to build (which can be scripted), since it doesn’t seem to actually apply. E.g., it shouldn’t be there, so we get rid of it. But I’m not a lawyer… I’m also the dumbest person I know, so keep that in mind.
P.S.
All Google’s Clang/LLVM prebuilts are here:
https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+/refs/heads/main
and have an Android.bp license of:
license {
name: "prebuilts_clang_host_linux-x86_license",
visibility: [":__subpackages__"],
license_kinds: [
"SPDX-license-identifier-Apache-2.0",
"SPDX-license-identifier-BSD",
"SPDX-license-identifier-MIT",
"SPDX-license-identifier-NCSA",
"SPDX-license-identifier-PSF-2.0",
"SPDX-license-identifier-Zlib",
"legacy_unencumbered",
],