aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/libcxx
diff options
context:
space:
mode:
authoralexv-smirnov <alex@ydb.tech>2023-03-15 19:59:12 +0300
committeralexv-smirnov <alex@ydb.tech>2023-03-15 19:59:12 +0300
commit056bb284ccf8dd6793ec3a54ffa36c4fb2b9ad11 (patch)
tree4740980126f32e3af7937ba0ca5f83e59baa4ab0 /contrib/libs/cxxsupp/libcxx
parent269126dcced1cc8b53eb4398b4a33e5142f10290 (diff)
downloadydb-056bb284ccf8dd6793ec3a54ffa36c4fb2b9ad11.tar.gz
add library/cpp/actors, ymake build to ydb oss export
Diffstat (limited to 'contrib/libs/cxxsupp/libcxx')
-rw-r--r--contrib/libs/cxxsupp/libcxx/ya.make261
1 files changed, 261 insertions, 0 deletions
diff --git a/contrib/libs/cxxsupp/libcxx/ya.make b/contrib/libs/cxxsupp/libcxx/ya.make
new file mode 100644
index 00000000000..d6032ecc261
--- /dev/null
+++ b/contrib/libs/cxxsupp/libcxx/ya.make
@@ -0,0 +1,261 @@
+LIBRARY()
+
+LICENSE(
+ Apache-2.0 AND
+ Apache-2.0 WITH LLVM-exception AND
+ BSD-2-Clause AND
+ MIT AND
+ NCSA
+)
+
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+VERSION(2022-02-20)
+
+ORIGINAL_SOURCE(https://github.com/llvm/llvm-project/archive/34313583331e5c8cb0d3df28efb6c34c428fd235.tar.gz)
+
+ADDINCL(
+ GLOBAL contrib/libs/cxxsupp/libcxx/include
+ contrib/libs/cxxsupp/libcxx/src
+)
+
+CXXFLAGS(-D_LIBCPP_BUILDING_LIBRARY)
+
+IF (EXPORT_CMAKE)
+ # TODO(YMAKE-91) split C_DEFINES core.conf var into parts and avoid libc++ ya.make modification
+ CXXFLAGS(GLOBAL -D_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES)
+ENDIF()
+
+IF (OS_ANDROID)
+ DEFAULT(CXX_RT "default")
+ IF (ARCH_I686 OR ARCH_ARM7)
+ # 32-bit architectures require additional libandroid_support.so to be linked
+ # We add --start-group / --end-group statements due to the issue in NDK < r22.
+ # See: https://github.com/android/ndk/issues/1130
+ #
+ # Though these statements are not respected by LLD, they might have sense for other linkers.
+ LDFLAGS(
+ -Wl,--start-group
+ -lc++abi
+ -landroid_support
+ -Wl,--end-group
+ )
+ ELSE()
+ LDFLAGS(-lc++abi)
+ ENDIF()
+ CFLAGS(
+ -DLIBCXX_BUILDING_LIBCXXABI
+ )
+ELSEIF (OS_IOS)
+ # Take cxxabi implementation from system.
+ LDFLAGS(-lc++abi)
+ CFLAGS(
+ -DLIBCXX_BUILDING_LIBCXXABI
+ )
+ # Yet take builtins library from Arcadia
+ PEERDIR(
+ contrib/libs/cxxsupp/builtins
+ )
+ELSEIF (OS_LINUX OR OS_DARWIN)
+ IF (ARCH_ARM7)
+ # XXX: libcxxrt support for ARM is currently broken
+ DEFAULT(CXX_RT "glibcxx_static")
+ # ARM7 OS_SDK has old libstdc++ without aligned allocation support
+ CFLAGS(
+ GLOBAL -fno-aligned-new
+ )
+ ELSE()
+ DEFAULT(CXX_RT "libcxxrt")
+ ENDIF()
+ IF (MUSL)
+ PEERDIR(
+ contrib/libs/musl/include
+ )
+ ENDIF()
+ELSEIF (OS_WINDOWS)
+ SRCS(
+ src/support/win32/locale_win32.cpp
+ src/support/win32/support.cpp
+ src/support/win32/atomic_win32.cpp
+ src/support/win32/new_win32.cpp
+ src/support/win32/thread_win32.cpp
+ )
+ CFLAGS(
+ GLOBAL -D_LIBCPP_VASPRINTF_DEFINED
+ GLOBAL -D_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_
+ )
+ IF (CLANG_CL)
+ PEERDIR(
+ contrib/libs/cxxsupp/builtins
+ )
+ ENDIF()
+ELSE()
+ DEFAULT(CXX_RT "glibcxx_static")
+ CXXFLAGS(
+ -Wno-unknown-pragmas
+ -nostdinc++
+ )
+ENDIF()
+
+IF (OS_LINUX)
+ EXTRALIBS(-lpthread)
+ENDIF()
+
+IF (CLANG)
+ CFLAGS(
+ GLOBAL -nostdinc++
+ )
+ENDIF()
+
+# The CXX_RT variable controls which C++ runtime is used.
+# * libcxxrt - https://github.com/libcxxrt/libcxxrt library stored in Arcadia
+# * glibcxx_static - GNU C++ Library runtime with static linkage
+# * glibcxx_dynamic - GNU C++ Library runtime with dynamic linkage
+# * default - default C++ runtime provided by the compiler driver
+#
+# All glibcxx* runtimes are taken from system/compiler SDK
+
+DEFAULT(CXX_RT "default")
+
+DISABLE(NEED_GLIBCXX_CXX17_SHIMS)
+DISABLE(NEED_CXX_RT_ADDINCL)
+
+IF (CXX_RT == "libcxxrt")
+ PEERDIR(
+ contrib/libs/cxxsupp/libcxxabi-parts
+ contrib/libs/cxxsupp/libcxxrt
+ contrib/libs/cxxsupp/builtins
+ )
+ ADDINCL(
+ GLOBAL contrib/libs/cxxsupp/libcxxrt/include
+ )
+ CFLAGS(
+ GLOBAL -DLIBCXX_BUILDING_LIBCXXRT
+ )
+ # These builtins are equivalent to clang -rtlib=compiler_rt and
+ # are needed by potentially any code generated by clang.
+ # With glibcxx runtime, builtins are provided by libgcc
+ELSEIF (CXX_RT == "glibcxx_static")
+ LDFLAGS(
+ -Wl,-Bstatic
+ -lsupc++
+ -lgcc
+ -lgcc_eh
+ -Wl,-Bdynamic
+ )
+ CXXFLAGS(-D__GLIBCXX__=1)
+ ENABLE(NEED_GLIBCXX_CXX17_SHIMS)
+ ENABLE(NEED_CXX_RT_ADDINCL)
+ CFLAGS(
+ GLOBAL -DLIBCXX_BUILDING_LIBGCC
+ )
+ELSEIF (CXX_RT == "glibcxx_dynamic")
+ LDFLAGS(
+ -lgcc_s
+ -lstdc++
+ )
+ CXXFLAGS(-D__GLIBCXX__=1)
+ CFLAGS(
+ GLOBAL -DLIBCXX_BUILDING_LIBGCC
+ )
+ ENABLE(NEED_GLIBCXX_CXX17_SHIMS)
+ ENABLE(NEED_CXX_RT_ADDINCL)
+ELSEIF (CXX_RT == "default")
+ # Do nothing
+ELSE()
+ MESSAGE(FATAL_ERROR "Unexpected CXX_RT value: ${CXX_RT}")
+ENDIF()
+
+IF (NEED_GLIBCXX_CXX17_SHIMS)
+ IF (GCC)
+ # Assume GCC is bundled with a modern enough version of C++ runtime
+ ELSEIF (OS_SDK == "ubuntu-12" OR OS_SDK == "ubuntu-14" OR OS_SDK == "ubuntu-16")
+ # Prior to ubuntu-18, system C++ runtime for C++17 is incomplete
+ # and requires std::uncaught_exceptions() to be implemented.
+ SRCS(
+ glibcxx_eh_cxx17.cpp
+ )
+ ENDIF()
+ENDIF()
+
+IF (NEED_CXX_RT_ADDINCL)
+ # FIXME:
+ # This looks extremely weird and we have to use cxxabi.h from libsupc++ instead.
+ # This ADDINCL is placed here just to fix the status quo
+ ADDINCL(
+ GLOBAL contrib/libs/cxxsupp/libcxxrt/include
+ )
+ENDIF()
+
+NO_UTIL()
+
+NO_RUNTIME()
+
+NO_COMPILER_WARNINGS()
+
+IF (FUZZING)
+ NO_SANITIZE()
+ NO_SANITIZE_COVERAGE()
+ENDIF()
+
+SRCS(
+ src/algorithm.cpp
+ src/any.cpp
+ src/assert.cpp
+ src/atomic.cpp
+ src/barrier.cpp
+ src/bind.cpp
+ src/charconv.cpp
+ src/chrono.cpp
+ src/condition_variable.cpp
+ src/condition_variable_destructor.cpp
+ src/debug.cpp
+ src/exception.cpp
+ src/filesystem/directory_iterator.cpp
+ src/filesystem/operations.cpp
+ src/functional.cpp
+ src/future.cpp
+ src/hash.cpp
+ src/ios.cpp
+ src/ios.instantiations.cpp
+ src/iostream.cpp
+ src/legacy_pointer_safety.cpp
+ src/locale.cpp
+ src/memory.cpp
+ src/mutex.cpp
+ src/mutex_destructor.cpp
+ src/optional.cpp
+ src/random.cpp
+ src/random_shuffle.cpp
+ src/regex.cpp
+ src/ryu/d2fixed.cpp
+ src/ryu/d2s.cpp
+ src/ryu/f2s.cpp
+ src/shared_mutex.cpp
+ src/stdexcept.cpp
+ src/string.cpp
+ src/strstream.cpp
+ src/system_error.cpp
+ src/thread.cpp
+ src/typeinfo.cpp
+ src/utility.cpp
+ src/valarray.cpp
+ src/variant.cpp
+ src/vector.cpp
+)
+
+IF (NOT GCC)
+ # compiling src/format.cpp requires -std=c++20,
+ # yet our GCC version it too auld for this.
+ SRCS(
+ src/format.cpp
+ )
+ENDIF()
+
+IF (NOT OS_WINDOWS)
+ SRCS(
+ src/new.cpp
+ )
+ENDIF()
+
+END()