forked from OSchip/llvm-project
[gn] Support for building libc++
This change introduces support for building libc++. The library build should be complete, but not all CMake options have been replicated in GN. We also don't support tests yet. We only support two stage build at the moment. Differential Revision: https://reviews.llvm.org/D61143 llvm-svn: 359806
This commit is contained in:
parent
4fe63c70c7
commit
fa3c328c51
|
@ -138,8 +138,7 @@ set_property(CACHE LIBCXX_CXX_ABI PROPERTY STRINGS ;${CXXABIS})
|
||||||
# Setup the default options if LIBCXX_CXX_ABI is not specified.
|
# Setup the default options if LIBCXX_CXX_ABI is not specified.
|
||||||
if (LIBCXX_CXX_ABI STREQUAL "default")
|
if (LIBCXX_CXX_ABI STREQUAL "default")
|
||||||
find_path(
|
find_path(
|
||||||
LIBCXX_LIBCXXABI_INCLUDES_INTERNAL
|
LIBCXX_LIBCXXABI_INCLUDES_INTERNAL cxxabi.h
|
||||||
cxxabi.h
|
|
||||||
PATHS ${LLVM_MAIN_SRC_DIR}/projects/libcxxabi/include
|
PATHS ${LLVM_MAIN_SRC_DIR}/projects/libcxxabi/include
|
||||||
${LLVM_MAIN_SRC_DIR}/runtimes/libcxxabi/include
|
${LLVM_MAIN_SRC_DIR}/runtimes/libcxxabi/include
|
||||||
${LLVM_MAIN_SRC_DIR}/../libcxxabi/include
|
${LLVM_MAIN_SRC_DIR}/../libcxxabi/include
|
||||||
|
|
|
@ -13,6 +13,7 @@ group("default") {
|
||||||
if (current_os == "linux") {
|
if (current_os == "linux") {
|
||||||
deps += [
|
deps += [
|
||||||
"//compiler-rt",
|
"//compiler-rt",
|
||||||
|
"//libcxx",
|
||||||
"//libcxxabi",
|
"//libcxxabi",
|
||||||
"//libunwind",
|
"//libunwind",
|
||||||
]
|
]
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
group("libcxx") {
|
||||||
|
deps = [
|
||||||
|
"include",
|
||||||
|
"src(//llvm/utils/gn/build/toolchain:stage2_unix)",
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,276 @@
|
||||||
|
import("//clang/resource_dir.gni")
|
||||||
|
import("//libcxx/config.gni")
|
||||||
|
import("//llvm/utils/gn/build/write_cmake_config.gni")
|
||||||
|
|
||||||
|
declare_args() {
|
||||||
|
# Install libc++ support headers.
|
||||||
|
libcxx_install_support_headers = true
|
||||||
|
}
|
||||||
|
|
||||||
|
libcxx_needs_site_config =
|
||||||
|
libcxx_abi_version != 1 || libcxx_abi_namespace != "" || libcxx_abi_unstable
|
||||||
|
|
||||||
|
if (libcxx_needs_site_config) {
|
||||||
|
write_cmake_config("write_config") {
|
||||||
|
input = "__config_site.in"
|
||||||
|
output = "$target_gen_dir/__config_site"
|
||||||
|
|
||||||
|
values = []
|
||||||
|
if (libcxx_abi_version != 1) {
|
||||||
|
values += [ "_LIBCPP_ABI_VERSION=$libcxx_abi_version" ]
|
||||||
|
}
|
||||||
|
if (libcxx_abi_namespace != "") {
|
||||||
|
values += [ "_LIBCPP_ABI_NAMESPACE=$libcxx_abi_namespace" ]
|
||||||
|
}
|
||||||
|
if (libcxx_abi_unstable) {
|
||||||
|
values += [ "_LIBCPP_ABI_UNSTABLE=" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generate a custom __config header. The new header is created
|
||||||
|
# by prepending __config_site to the current __config header.
|
||||||
|
action("concat_config") {
|
||||||
|
script = "//libcxx/utils/cat_files.py"
|
||||||
|
inputs = [
|
||||||
|
"$target_gen_dir/__config_site",
|
||||||
|
"__config",
|
||||||
|
]
|
||||||
|
outputs = [
|
||||||
|
"$target_gen_dir/__config",
|
||||||
|
]
|
||||||
|
args = [
|
||||||
|
"$target_gen_dir/__config_site",
|
||||||
|
"__config",
|
||||||
|
"-o",
|
||||||
|
"$target_gen_dir/__config",
|
||||||
|
]
|
||||||
|
deps = [
|
||||||
|
":write_config",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
copy("copy_config") {
|
||||||
|
sources = [
|
||||||
|
"$target_gen_dir/__config",
|
||||||
|
]
|
||||||
|
outputs = [
|
||||||
|
"$clang_resource_dir/include/c++/v1/{{source_file_part}}",
|
||||||
|
]
|
||||||
|
deps = [
|
||||||
|
":concat_config",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
copy("include") {
|
||||||
|
sources = [
|
||||||
|
"__bit_reference",
|
||||||
|
"__bsd_locale_defaults.h",
|
||||||
|
"__bsd_locale_fallbacks.h",
|
||||||
|
"__debug",
|
||||||
|
"__errc",
|
||||||
|
"__functional_03",
|
||||||
|
"__functional_base",
|
||||||
|
"__functional_base_03",
|
||||||
|
"__hash_table",
|
||||||
|
"__libcpp_version",
|
||||||
|
"__locale",
|
||||||
|
"__mutex_base",
|
||||||
|
"__node_handle",
|
||||||
|
"__nullptr",
|
||||||
|
"__split_buffer",
|
||||||
|
"__sso_allocator",
|
||||||
|
"__std_stream",
|
||||||
|
"__string",
|
||||||
|
"__threading_support",
|
||||||
|
"__tree",
|
||||||
|
"__tuple",
|
||||||
|
"__undef_macros",
|
||||||
|
"algorithm",
|
||||||
|
"any",
|
||||||
|
"array",
|
||||||
|
"atomic",
|
||||||
|
"bit",
|
||||||
|
"bitset",
|
||||||
|
"cassert",
|
||||||
|
"ccomplex",
|
||||||
|
"cctype",
|
||||||
|
"cerrno",
|
||||||
|
"cfenv",
|
||||||
|
"cfloat",
|
||||||
|
"charconv",
|
||||||
|
"chrono",
|
||||||
|
"cinttypes",
|
||||||
|
"ciso646",
|
||||||
|
"climits",
|
||||||
|
"clocale",
|
||||||
|
"cmath",
|
||||||
|
"codecvt",
|
||||||
|
"compare",
|
||||||
|
"complex",
|
||||||
|
"complex.h",
|
||||||
|
"condition_variable",
|
||||||
|
"csetjmp",
|
||||||
|
"csignal",
|
||||||
|
"cstdarg",
|
||||||
|
"cstdbool",
|
||||||
|
"cstddef",
|
||||||
|
"cstdint",
|
||||||
|
"cstdio",
|
||||||
|
"cstdlib",
|
||||||
|
"cstring",
|
||||||
|
"ctgmath",
|
||||||
|
"ctime",
|
||||||
|
"ctype.h",
|
||||||
|
"cwchar",
|
||||||
|
"cwctype",
|
||||||
|
"deque",
|
||||||
|
"errno.h",
|
||||||
|
"exception",
|
||||||
|
"experimental/__config",
|
||||||
|
"experimental/__memory",
|
||||||
|
"experimental/algorithm",
|
||||||
|
"experimental/any",
|
||||||
|
"experimental/chrono",
|
||||||
|
"experimental/coroutine",
|
||||||
|
"experimental/deque",
|
||||||
|
"experimental/filesystem",
|
||||||
|
"experimental/forward_list",
|
||||||
|
"experimental/functional",
|
||||||
|
"experimental/iterator",
|
||||||
|
"experimental/list",
|
||||||
|
"experimental/map",
|
||||||
|
"experimental/memory_resource",
|
||||||
|
"experimental/numeric",
|
||||||
|
"experimental/optional",
|
||||||
|
"experimental/propagate_const",
|
||||||
|
"experimental/ratio",
|
||||||
|
"experimental/regex",
|
||||||
|
"experimental/set",
|
||||||
|
"experimental/simd",
|
||||||
|
"experimental/string",
|
||||||
|
"experimental/string_view",
|
||||||
|
"experimental/system_error",
|
||||||
|
"experimental/tuple",
|
||||||
|
"experimental/type_traits",
|
||||||
|
"experimental/unordered_map",
|
||||||
|
"experimental/unordered_set",
|
||||||
|
"experimental/utility",
|
||||||
|
"experimental/vector",
|
||||||
|
"ext/__hash",
|
||||||
|
"ext/hash_map",
|
||||||
|
"ext/hash_set",
|
||||||
|
"fenv.h",
|
||||||
|
"filesystem",
|
||||||
|
"float.h",
|
||||||
|
"forward_list",
|
||||||
|
"fstream",
|
||||||
|
"functional",
|
||||||
|
"future",
|
||||||
|
"initializer_list",
|
||||||
|
"inttypes.h",
|
||||||
|
"iomanip",
|
||||||
|
"ios",
|
||||||
|
"iosfwd",
|
||||||
|
"iostream",
|
||||||
|
"istream",
|
||||||
|
"iterator",
|
||||||
|
"limits",
|
||||||
|
"limits.h",
|
||||||
|
"list",
|
||||||
|
"locale",
|
||||||
|
"locale.h",
|
||||||
|
"map",
|
||||||
|
"math.h",
|
||||||
|
"memory",
|
||||||
|
"module.modulemap",
|
||||||
|
"mutex",
|
||||||
|
"new",
|
||||||
|
"numeric",
|
||||||
|
"optional",
|
||||||
|
"ostream",
|
||||||
|
"queue",
|
||||||
|
"random",
|
||||||
|
"ratio",
|
||||||
|
"regex",
|
||||||
|
"scoped_allocator",
|
||||||
|
"set",
|
||||||
|
"setjmp.h",
|
||||||
|
"shared_mutex",
|
||||||
|
"span",
|
||||||
|
"sstream",
|
||||||
|
"stack",
|
||||||
|
"stdbool.h",
|
||||||
|
"stddef.h",
|
||||||
|
"stdexcept",
|
||||||
|
"stdint.h",
|
||||||
|
"stdio.h",
|
||||||
|
"stdlib.h",
|
||||||
|
"streambuf",
|
||||||
|
"string",
|
||||||
|
"string.h",
|
||||||
|
"string_view",
|
||||||
|
"strstream",
|
||||||
|
"system_error",
|
||||||
|
"tgmath.h",
|
||||||
|
"thread",
|
||||||
|
"tuple",
|
||||||
|
"type_traits",
|
||||||
|
"typeindex",
|
||||||
|
"typeinfo",
|
||||||
|
"unordered_map",
|
||||||
|
"unordered_set",
|
||||||
|
"utility",
|
||||||
|
"valarray",
|
||||||
|
"variant",
|
||||||
|
"vector",
|
||||||
|
"version",
|
||||||
|
"wchar.h",
|
||||||
|
"wctype.h",
|
||||||
|
]
|
||||||
|
deps = [
|
||||||
|
"//libcxxabi/include",
|
||||||
|
]
|
||||||
|
if (!libcxx_needs_site_config) {
|
||||||
|
sources += [ "__config" ]
|
||||||
|
} else {
|
||||||
|
deps += [ ":copy_config" ]
|
||||||
|
}
|
||||||
|
if (libcxx_install_support_headers) {
|
||||||
|
sources += [
|
||||||
|
"support/android/locale_bionic.h",
|
||||||
|
"support/fuchsia/xlocale.h",
|
||||||
|
"support/ibm/limits.h",
|
||||||
|
"support/ibm/locale_mgmt_aix.h",
|
||||||
|
"support/ibm/support.h",
|
||||||
|
"support/ibm/xlocale.h",
|
||||||
|
"support/musl/xlocale.h",
|
||||||
|
"support/newlib/xlocale.h",
|
||||||
|
"support/solaris/floatingpoint.h",
|
||||||
|
"support/solaris/wchar.h",
|
||||||
|
"support/solaris/xlocale.h",
|
||||||
|
"support/xlocale/__nop_locale_mgmt.h",
|
||||||
|
"support/xlocale/__posix_l_fallback.h",
|
||||||
|
"support/xlocale/__strtonum_fallback.h",
|
||||||
|
]
|
||||||
|
if (target_os == "win") {
|
||||||
|
sources += [
|
||||||
|
"support/win32/limits_msvc_win32.h",
|
||||||
|
"support/win32/locale_win32.h",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
outputs = [
|
||||||
|
"$clang_resource_dir/include/c++/v1/{{source_target_relative}}",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
copy("cxxabi_include") {
|
||||||
|
sources = [
|
||||||
|
"//libcxxabi/include/__cxxabi_config.h", # ignore for sync script
|
||||||
|
"//libcxxabi/include/cxxabi.h", # ignore for sync script
|
||||||
|
]
|
||||||
|
outputs = [
|
||||||
|
"$clang_resource_dir/include/c++/v1/{{source_target_relative}}",
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,301 @@
|
||||||
|
import("//clang/runtimes.gni")
|
||||||
|
import("//llvm/utils/gn/build/symlink_or_copy.gni")
|
||||||
|
|
||||||
|
declare_args() {
|
||||||
|
# Build libc++ with definitions for operator new/delete.
|
||||||
|
libcxx_enable_new_delete_definitions = true
|
||||||
|
|
||||||
|
# Build libc++ as a shared library.
|
||||||
|
libcxx_enable_shared = true
|
||||||
|
|
||||||
|
# Build libc++ as a static library.
|
||||||
|
libcxx_enable_static = true
|
||||||
|
|
||||||
|
# Build filesystem as part of libc++fs.a.
|
||||||
|
libcxx_enable_filesystem = target_os != "win"
|
||||||
|
|
||||||
|
# Build libc++experimental.a.
|
||||||
|
libcxx_enable_experimental = true
|
||||||
|
|
||||||
|
# Use compiler-rt builtins.
|
||||||
|
libcxx_use_compiler_rt = true
|
||||||
|
|
||||||
|
# Use exceptions.
|
||||||
|
libcxx_enable_exceptions = true
|
||||||
|
|
||||||
|
# Use run time type information.
|
||||||
|
libcxx_enable_rtti = true
|
||||||
|
|
||||||
|
# Do not export any symbols from the static library.
|
||||||
|
libcxx_hermetic_static_library = true
|
||||||
|
|
||||||
|
# Use and install a linker script for the given ABI library.
|
||||||
|
libcxx_enable_abi_linker_script = true
|
||||||
|
}
|
||||||
|
|
||||||
|
config("cxx_config") {
|
||||||
|
include_dirs = [
|
||||||
|
"//libcxxabi/include",
|
||||||
|
"//libcxx/include",
|
||||||
|
]
|
||||||
|
cflags = [
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-W",
|
||||||
|
"-Wwrite-strings",
|
||||||
|
"-Wno-unused-parameter",
|
||||||
|
"-Wno-long-long",
|
||||||
|
"-Werror=return-type",
|
||||||
|
"-Wextra-semi",
|
||||||
|
"-Wno-user-defined-literals",
|
||||||
|
"-Wno-covered-switch-default",
|
||||||
|
]
|
||||||
|
cflags_cc = [ "-nostdinc++" ]
|
||||||
|
if (target_os == "win") {
|
||||||
|
cflags_cc += [ "/std:c++11" ]
|
||||||
|
} else {
|
||||||
|
cflags_cc += [ "-std=c++11" ]
|
||||||
|
}
|
||||||
|
defines = [ "_LIBCPP_BUILDING_LIBRARY" ]
|
||||||
|
if (target_os == "win") {
|
||||||
|
cflags += [ "/Zl" ]
|
||||||
|
defines += [
|
||||||
|
# Ignore the -MSC_VER mismatch, as we may build
|
||||||
|
# with a different compatibility version.
|
||||||
|
"_ALLOW_MSC_VER_MISMATCH",
|
||||||
|
|
||||||
|
# Don't check the msvcprt iterator debug levels
|
||||||
|
# as we will define the iterator types; libc++
|
||||||
|
# uses a different macro to identify the debug
|
||||||
|
# level.
|
||||||
|
"_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH",
|
||||||
|
|
||||||
|
# We are building the c++ runtime, don't pull in
|
||||||
|
# msvcprt.
|
||||||
|
"_CRTBLD",
|
||||||
|
|
||||||
|
# Don't warn on the use of "deprecated"
|
||||||
|
# "insecure" functions which are standards
|
||||||
|
# specified.
|
||||||
|
"_CRT_SECURE_NO_WARNINGS",
|
||||||
|
|
||||||
|
# Use the ISO conforming behaviour for conversion
|
||||||
|
# in printf, scanf.
|
||||||
|
"_CRT_STDIO_ISO_WIDE_SPECIFIERS",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
if (libcxx_enable_exceptions) {
|
||||||
|
if (current_os == "win") {
|
||||||
|
cflags_cc += [ "/EHsc" ]
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (current_os == "win") {
|
||||||
|
cflags_cc += [
|
||||||
|
"/EHs-",
|
||||||
|
"/EHa-",
|
||||||
|
]
|
||||||
|
} else {
|
||||||
|
cflags_cc += [ "-fno-exceptions" ]
|
||||||
|
}
|
||||||
|
defines += [ "-D_LIBCPP_NO_EXCEPTIONS" ]
|
||||||
|
}
|
||||||
|
if (!libcxx_enable_rtti) {
|
||||||
|
if (current_os == "win") {
|
||||||
|
cflags_cc += [ "/GR-" ]
|
||||||
|
} else {
|
||||||
|
cflags_cc += [ "-fno-rtti" ]
|
||||||
|
}
|
||||||
|
defines += [ "-D_LIBCPP_NO_RTTI" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cxx_sources = [
|
||||||
|
"algorithm.cpp",
|
||||||
|
"string.cpp",
|
||||||
|
"ios.cpp",
|
||||||
|
"condition_variable.cpp",
|
||||||
|
"hash.cpp",
|
||||||
|
"random.cpp",
|
||||||
|
"new.cpp",
|
||||||
|
"functional.cpp",
|
||||||
|
"exception.cpp",
|
||||||
|
"support/runtime/exception_msvc.ipp",
|
||||||
|
"support/runtime/exception_libcxxabi.ipp",
|
||||||
|
"support/runtime/exception_glibcxx.ipp",
|
||||||
|
"support/runtime/new_handler_fallback.ipp",
|
||||||
|
"support/runtime/exception_libcxxrt.ipp",
|
||||||
|
"support/runtime/exception_pointer_unimplemented.ipp",
|
||||||
|
"support/runtime/exception_pointer_cxxabi.ipp",
|
||||||
|
"support/runtime/exception_pointer_msvc.ipp",
|
||||||
|
"support/runtime/exception_fallback.ipp",
|
||||||
|
"support/runtime/exception_pointer_glibcxx.ipp",
|
||||||
|
"variant.cpp",
|
||||||
|
"shared_mutex.cpp",
|
||||||
|
"optional.cpp",
|
||||||
|
"strstream.cpp",
|
||||||
|
"include/apple_availability.h",
|
||||||
|
"include/refstring.h",
|
||||||
|
"include/config_elast.h",
|
||||||
|
"include/atomic_support.h",
|
||||||
|
"future.cpp",
|
||||||
|
"system_error.cpp",
|
||||||
|
"bind.cpp",
|
||||||
|
"iostream.cpp",
|
||||||
|
"stdexcept.cpp",
|
||||||
|
"valarray.cpp",
|
||||||
|
"chrono.cpp",
|
||||||
|
"typeinfo.cpp",
|
||||||
|
"locale.cpp",
|
||||||
|
"debug.cpp",
|
||||||
|
"charconv.cpp",
|
||||||
|
"utility.cpp",
|
||||||
|
"regex.cpp",
|
||||||
|
"mutex.cpp",
|
||||||
|
"any.cpp",
|
||||||
|
"thread.cpp",
|
||||||
|
"vector.cpp",
|
||||||
|
"memory.cpp",
|
||||||
|
]
|
||||||
|
if (target_os == "win") {
|
||||||
|
cxx_sources += [
|
||||||
|
"support/win32/locale_win32.cpp",
|
||||||
|
"support/win32/support.cpp",
|
||||||
|
"support/win32/thread_win32.cpp",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
if (target_os == "solaris") {
|
||||||
|
cxx_sources += [
|
||||||
|
# This comment prevents `gn format` from putting the file on the same line
|
||||||
|
# as `sources +=`, for sync_source_lists_from_cmake.py.
|
||||||
|
"support/solaris/xlocale.cpp",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
if (libcxx_enable_filesystem) {
|
||||||
|
cxx_sources += [
|
||||||
|
"filesystem/directory_iterator.cpp",
|
||||||
|
"filesystem/filesystem_common.h",
|
||||||
|
"filesystem/operations.cpp",
|
||||||
|
]
|
||||||
|
if (libcxx_use_compiler_rt) {
|
||||||
|
cxx_sources += [
|
||||||
|
# This comment prevents `gn format` from putting the file on the same line
|
||||||
|
# as `sources +=`, for sync_source_lists_from_cmake.py.
|
||||||
|
"filesystem/int128_builtins.cpp",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (libcxx_enable_shared) {
|
||||||
|
shared_library("cxx_shared") {
|
||||||
|
output_dir = runtimes_dir
|
||||||
|
output_name = "c++"
|
||||||
|
if (libcxx_enable_abi_linker_script) {
|
||||||
|
output_extension = "so.0"
|
||||||
|
}
|
||||||
|
if (target_os == "linux" || target_os == "mac") {
|
||||||
|
cflags = [ "-fPIC" ]
|
||||||
|
ldflags = [ "-nostdlib++" ]
|
||||||
|
libs = [
|
||||||
|
"dl",
|
||||||
|
"pthread",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
sources = cxx_sources
|
||||||
|
deps = [
|
||||||
|
"//compiler-rt/lib/builtins",
|
||||||
|
"//libcxxabi/src:cxxabi_shared",
|
||||||
|
"//libunwind/src:unwind_shared",
|
||||||
|
]
|
||||||
|
configs += [ ":cxx_config" ]
|
||||||
|
configs -= [
|
||||||
|
"//llvm/utils/gn/build:no_exceptions",
|
||||||
|
"//llvm/utils/gn/build:no_rtti",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
symlink_or_copy("cxx_symlink") {
|
||||||
|
deps = [
|
||||||
|
":cxx_shared",
|
||||||
|
]
|
||||||
|
source = "libc++.so.0"
|
||||||
|
output = "$runtimes_dir/libc++.so"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (libcxx_enable_abi_linker_script) {
|
||||||
|
action("cxx_linker_script") {
|
||||||
|
script = "//libcxx/utils/gen_link_script.py"
|
||||||
|
outputs = [
|
||||||
|
"$runtimes_dir/libc++.so",
|
||||||
|
]
|
||||||
|
args = [
|
||||||
|
"--input",
|
||||||
|
"$runtimes_dir/libc++.so.0",
|
||||||
|
"--output",
|
||||||
|
"$runtimes_dir/libc++.so",
|
||||||
|
"c++abi",
|
||||||
|
"unwind",
|
||||||
|
]
|
||||||
|
deps = [
|
||||||
|
":cxx_symlink",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (libcxx_enable_static) {
|
||||||
|
static_library("cxx_static") {
|
||||||
|
output_dir = runtimes_dir
|
||||||
|
output_name = "c++"
|
||||||
|
complete_static_lib = true
|
||||||
|
configs -= [ "//llvm/utils/gn/build:thin_archive" ]
|
||||||
|
sources = cxx_sources
|
||||||
|
if (libcxx_hermetic_static_library) {
|
||||||
|
cflags = [ "-fvisibility=hidden" ]
|
||||||
|
cflags_cc = [ "-fvisibility-global-new-delete-hidden" ]
|
||||||
|
defines = [ "_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS" ]
|
||||||
|
}
|
||||||
|
deps = [
|
||||||
|
"//compiler-rt/lib/builtins",
|
||||||
|
"//libcxxabi/src:cxxabi_static",
|
||||||
|
"//libunwind/src:unwind_static",
|
||||||
|
]
|
||||||
|
configs += [ ":cxx_config" ]
|
||||||
|
configs -= [
|
||||||
|
"//llvm/utils/gn/build:no_exceptions",
|
||||||
|
"//llvm/utils/gn/build:no_rtti",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (libcxx_enable_experimental) {
|
||||||
|
static_library("cxx_experimental") {
|
||||||
|
output_dir = runtimes_dir
|
||||||
|
output_name = "c++experimental"
|
||||||
|
cflags_cc = [ "-std=c++14" ]
|
||||||
|
sources = [
|
||||||
|
"experimental/memory_resource.cpp",
|
||||||
|
]
|
||||||
|
configs += [ ":cxx_config" ]
|
||||||
|
configs -= [
|
||||||
|
"//llvm/utils/gn/build:no_exceptions",
|
||||||
|
"//llvm/utils/gn/build:no_rtti",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
group("src") {
|
||||||
|
deps = []
|
||||||
|
if (libcxx_enable_shared) {
|
||||||
|
if (libcxx_enable_abi_linker_script) {
|
||||||
|
deps += [ ":cxx_linker_script" ]
|
||||||
|
} else {
|
||||||
|
deps += [ ":cxx_shared" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (libcxx_enable_static) {
|
||||||
|
deps += [ ":cxx_static" ]
|
||||||
|
}
|
||||||
|
if (libcxx_enable_experimental) {
|
||||||
|
deps += [ ":cxx_experimental" ]
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue