Compile libcxx and libcxxabi for Android (flutter/engine#6886)
This commit is contained in:
committed by
GitHub
parent
f9b34e641c
commit
29dd185ae9
8
DEPS
8
DEPS
@@ -117,7 +117,7 @@ allowed_hosts = [
|
||||
]
|
||||
|
||||
deps = {
|
||||
'src': 'https://github.com/flutter/buildroot.git' + '@' + '2b7fe9635c00c932f86627988e797a097574929e',
|
||||
'src': 'https://github.com/flutter/buildroot.git' + '@' + '98cd6828f68ee4ee592db50891f46f92072c08e1',
|
||||
|
||||
# Fuchsia compatibility
|
||||
#
|
||||
@@ -140,6 +140,12 @@ deps = {
|
||||
'src/third_party/harfbuzz':
|
||||
Var('fuchsia_git') + '/third_party/harfbuzz' + '@' + '02caec6c1c6ad996666788b8e920ccaec8b385e5',
|
||||
|
||||
'src/third_party/libcxx':
|
||||
Var('fuchsia_git') + '/third_party/libcxx' + '@' + 'c5a5fa59789213c7dae68d2e51cb28ef681d8257',
|
||||
|
||||
'src/third_party/libcxxabi':
|
||||
Var('fuchsia_git') + '/third_party/libcxxabi' + '@' + '1a9753522f1ae8d72848d365902f39e0d3d59a39',
|
||||
|
||||
# Chromium-style
|
||||
#
|
||||
# As part of integrating with Fuchsia, we should eventually remove all these
|
||||
|
||||
@@ -7116,6 +7116,117 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
--------------------------------------------------------------------------------
|
||||
libcxx
|
||||
|
||||
University of Illinois/NCSA
|
||||
Open Source License
|
||||
|
||||
Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Developed by:
|
||||
|
||||
LLVM Team
|
||||
|
||||
University of Illinois at Urbana-Champaign
|
||||
|
||||
http://llvm.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal with
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimers.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimers in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the names of the LLVM Team, University of Illinois at
|
||||
Urbana-Champaign, nor the names of its contributors may be used to
|
||||
endorse or promote products derived from this Software without specific
|
||||
prior written permission.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
|
||||
SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
libcxx
|
||||
libcxxabi
|
||||
|
||||
Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
libcxxabi
|
||||
|
||||
University of Illinois/NCSA
|
||||
Open Source License
|
||||
|
||||
Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Developed by:
|
||||
|
||||
LLVM Team
|
||||
|
||||
University of Illinois at Urbana-Champaign
|
||||
|
||||
http://llvm.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal with
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimers.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimers in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the names of the LLVM Team, University of Illinois at
|
||||
Urbana-Champaign, nor the names of its contributors may be used to
|
||||
endorse or promote products derived from this Software without specific
|
||||
prior written permission.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
|
||||
SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
libjpeg-turbo
|
||||
|
||||
Copyright (C) 1999-2006, MIYASAKA Masaru.
|
||||
|
||||
@@ -1442,30 +1442,6 @@ class RepositoryAndroidNdkSourcesAndroidDirectory extends RepositoryDirectory {
|
||||
}
|
||||
}
|
||||
|
||||
class RepositoryAndroidNdkSourcesCxxStlSubsubdirectory extends RepositoryDirectory {
|
||||
RepositoryAndroidNdkSourcesCxxStlSubsubdirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io);
|
||||
|
||||
@override
|
||||
RepositoryFile createFile(fs.IoNode entry) {
|
||||
if (entry.name == 'LICENSE.TXT')
|
||||
return new RepositoryCxxStlDualLicenseFile(this, entry);
|
||||
return super.createFile(entry);
|
||||
}
|
||||
}
|
||||
|
||||
class RepositoryAndroidNdkSourcesCxxStlSubdirectory extends RepositoryDirectory {
|
||||
RepositoryAndroidNdkSourcesCxxStlSubdirectory(RepositoryDirectory parent, fs.Directory io, this.subdirectoryName) : super(parent, io);
|
||||
|
||||
final String subdirectoryName;
|
||||
|
||||
@override
|
||||
RepositoryDirectory createSubdirectory(fs.Directory entry) {
|
||||
if (entry.name == subdirectoryName)
|
||||
return new RepositoryAndroidNdkSourcesCxxStlSubsubdirectory(this, entry);
|
||||
return super.createSubdirectory(entry);
|
||||
}
|
||||
}
|
||||
|
||||
class RepositoryAndroidNdkSourcesCxxStlDirectory extends RepositoryDirectory {
|
||||
RepositoryAndroidNdkSourcesCxxStlDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io);
|
||||
|
||||
@@ -1476,17 +1452,11 @@ class RepositoryAndroidNdkSourcesCxxStlDirectory extends RepositoryDirectory {
|
||||
bool shouldRecurse(fs.IoNode entry) {
|
||||
return entry.name != 'gabi++' // abarth says jamesr says we don't use these two
|
||||
&& entry.name != 'stlport'
|
||||
&& entry.name != 'llvm-libc++' // we ship our own custom-compiled libcxx/libcxxabi
|
||||
&& entry.name != 'llvm-libc++abi'
|
||||
&& entry.name != 'gnu-libstdc++'
|
||||
&& super.shouldRecurse(entry);
|
||||
}
|
||||
|
||||
@override
|
||||
RepositoryDirectory createSubdirectory(fs.Directory entry) {
|
||||
if (entry.name == 'llvm-libc++abi')
|
||||
return new RepositoryAndroidNdkSourcesCxxStlSubdirectory(this, entry, 'libcxxabi');
|
||||
if (entry.name == 'llvm-libc++')
|
||||
return new RepositoryAndroidNdkSourcesCxxStlSubdirectory(this, entry, 'libcxx');
|
||||
return super.createSubdirectory(entry);
|
||||
}
|
||||
}
|
||||
|
||||
class RepositoryAndroidNdkSourcesThirdPartyDirectory extends RepositoryGenericThirdPartyDirectory {
|
||||
@@ -1755,6 +1725,62 @@ class RepositoryJSR305SrcDirectory extends RepositoryDirectory {
|
||||
}
|
||||
}
|
||||
|
||||
class RepositoryLibcxxDirectory extends RepositoryDirectory {
|
||||
RepositoryLibcxxDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io);
|
||||
|
||||
@override
|
||||
bool shouldRecurse(fs.IoNode entry) {
|
||||
return entry.name != 'utils'
|
||||
&& super.shouldRecurse(entry);
|
||||
}
|
||||
|
||||
@override
|
||||
RepositoryDirectory createSubdirectory(fs.Directory entry) {
|
||||
if (entry.name == 'src')
|
||||
return new RepositoryLibcxxSrcDirectory(this, entry);
|
||||
return super.createSubdirectory(entry);
|
||||
}
|
||||
|
||||
@override
|
||||
RepositoryFile createFile(fs.IoNode entry) {
|
||||
if (entry.name == 'LICENSE.TXT')
|
||||
return new RepositoryCxxStlDualLicenseFile(this, entry);
|
||||
return super.createFile(entry);
|
||||
}
|
||||
}
|
||||
|
||||
class RepositoryLibcxxSrcDirectory extends RepositoryDirectory {
|
||||
RepositoryLibcxxSrcDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io);
|
||||
|
||||
@override
|
||||
RepositoryDirectory createSubdirectory(fs.Directory entry) {
|
||||
if (entry.name == 'support')
|
||||
return new RepositoryLibcxxSrcSupportDirectory(this, entry);
|
||||
return super.createSubdirectory(entry);
|
||||
}
|
||||
}
|
||||
|
||||
class RepositoryLibcxxSrcSupportDirectory extends RepositoryDirectory {
|
||||
RepositoryLibcxxSrcSupportDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io);
|
||||
|
||||
@override
|
||||
bool shouldRecurse(fs.IoNode entry) {
|
||||
return entry.name != 'solaris'
|
||||
&& super.shouldRecurse(entry);
|
||||
}
|
||||
}
|
||||
|
||||
class RepositoryLibcxxabiDirectory extends RepositoryDirectory {
|
||||
RepositoryLibcxxabiDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io);
|
||||
|
||||
@override
|
||||
RepositoryFile createFile(fs.IoNode entry) {
|
||||
if (entry.name == 'LICENSE.TXT')
|
||||
return new RepositoryCxxStlDualLicenseFile(this, entry);
|
||||
return super.createFile(entry);
|
||||
}
|
||||
}
|
||||
|
||||
class RepositoryLibJpegDirectory extends RepositoryDirectory {
|
||||
RepositoryLibJpegDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io);
|
||||
|
||||
@@ -1966,6 +1992,10 @@ class RepositoryRootThirdPartyDirectory extends RepositoryGenericThirdPartyDirec
|
||||
return new RepositoryIcuDirectory(this, entry);
|
||||
if (entry.name == 'jsr-305')
|
||||
return new RepositoryJSR305Directory(this, entry);
|
||||
if (entry.name == 'libcxx')
|
||||
return new RepositoryLibcxxDirectory(this, entry);
|
||||
if (entry.name == 'libcxxabi')
|
||||
return new RepositoryLibcxxabiDirectory(this, entry);
|
||||
if (entry.name == 'libjpeg')
|
||||
return new RepositoryLibJpegDirectory(this, entry);
|
||||
if (entry.name == 'libjpeg_turbo' || entry.name == 'libjpeg-turbo')
|
||||
|
||||
Reference in New Issue
Block a user