diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..4cf4ac1e93bd51711e6de8ae9cecf40113134a3c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.13.4) +project(Runtimes C CXX ASM) +add_subdirectory(libcxxabi) +add_subdirectory(libcxx) + diff --git a/libcxx-15.0.7.src.tar.xz b/libcxx-15.0.7.src.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..86f537150ec47650b8b3e8a08cecba31789bd8d7 Binary files /dev/null and b/libcxx-15.0.7.src.tar.xz differ diff --git a/libcxx-15.0.7.src.tar.xz.sig b/libcxx-15.0.7.src.tar.xz.sig new file mode 100644 index 0000000000000000000000000000000000000000..86fec9486136fd1be0867120763df8f3fa77fa6a Binary files /dev/null and b/libcxx-15.0.7.src.tar.xz.sig differ diff --git a/libcxx.spec b/libcxx.spec new file mode 100644 index 0000000000000000000000000000000000000000..1a9ff97e441795d944007357b14155f5a2b388bc --- /dev/null +++ b/libcxx.spec @@ -0,0 +1,143 @@ +%bcond_without sys_llvm +%bcond_without check + +%global debug_package %{nil} + +%global maj_ver 15 +%global min_ver 0 +%global patch_ver 7 +%global libcxx_version %{maj_ver}.%{min_ver}.%{patch_ver} +%global libcxx_srcdir libcxx-%{libcxx_version}.src +%global libcxxabi_srcdir libcxxabi-%{libcxx_version}.src + +%if %{with sys_llvm} +%global pkg_name libcxx +%global install_prefix %{_prefix} +%else +%global pkg_name libcxx%{maj_ver} +%global bin_suffix -%{maj_ver} +%global install_prefix %{_libdir}/%{name} +%endif + +%if 0%{?__isa_bits} == 64 +%global install_libdir %{install_prefix}/lib64 +%else +%global install_libdir %{install_prefix}/lib +%endif +%global install_includedir %{install_prefix}/include + +Name: %{pkg_name} +Version: %{libcxx_version} +Release: 1 +Summary: llvm C++ standard library + +License: Apache License 2.0 +URL: http://llvm.org +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{libcxx_version}/%{libcxx_srcdir}.tar.xz +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{libcxx_version}/%{libcxx_srcdir}.tar.xz.sig +Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{libcxx_version}/%{libcxxabi_srcdir}.tar.xz +Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{libcxx_version}/%{libcxxabi_srcdir}.tar.xz.sig +Source4: CMakeLists.txt + +BuildRequires: clang +BuildRequires: cmake +BuildRequires: ninja-build +BuildRequires: llvm-devel llvm-static +BuildRequires: python3 + +Requires: libcxxabi = %{version}-%{release} + +%description +libc++ is a new implementation of the C++ standard library, targeting C++11. + +%package devel +Summary: Headers and libraries for libcxx devel +Requires: %{name} = %{version}-%{release} +Requires: libcxxabi-devel = %{version} + +%description devel +%{summary}. + +%package static +Summary: Static libraries for libcxx + +%description static +%{summary}. + +%package -n libcxxabi +Summary: Low level support for a standard C++ library + +%description -n libcxxabi +libcxxabi provides low level support for a standard C++ library. + +%package -n libcxxabi-devel +Summary: Headers and libraries for libcxxabi devel +Requires: libcxxabi = %{version}-%{release} + +%description -n libcxxabi-devel +%{summary}. + +%package -n libcxxabi-static +Summary: Static libraries for libcxxabi + +%description -n libcxxabi-static +%{summary}. + +%prep +%setup -T -q -b 0 -n %{libcxx_srcdir} +%setup -T -q -b 2 -n %{libcxxabi_srcdir} +%setup -T -c -n build + +cp %{SOURCE4} .. +mv ../%{libcxx_srcdir} ../libcxx +mv ../%{libcxxabi_srcdir} ../libcxxabi +%autopatch -p1 + +%build + +%cmake -GNinja .. \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_MODULE_PATH=%{install_libdir}/cmake/llvm \ + -DLIBCXX_LIBDIR_SUFFIX:STRING=64 \ + -DLIBCXXABI_LIBDIR_SUFFIX:STRING=64 \ + -DLIBCXX_INCLUDE_BENCHMARKS=OFF \ + -DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \ + -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=ON + +%ninja_build + +%install + +%ninja_install + +%files +%license ../libcxx/LICENSE.TXT +%{install_libdir}/libc++.so.* + +%files devel +%{install_includedir}/c++/ +%exclude %{install_includedir}/c++/v1/cxxabi.h +%exclude %{install_includedir}/c++/v1/__cxxabi_config.h +%{install_libdir}/libc++.so + +%files static +%{install_libdir}/libc++.a +%{install_libdir}/libc++experimental.a + +%files -n libcxxabi +%license ../libcxxabi/LICENSE.TXT +%{install_libdir}/libc++abi.so.* + +%files -n libcxxabi-devel +%{install_includedir}/c++/v1/cxxabi.h +%{install_includedir}/c++/v1/__cxxabi_config.h +%{install_libdir}/libc++abi.so + +%files -n libcxxabi-static +%{install_libdir}/libc++abi.a + +%changelog +* Tue Jul 04 2023 cf-zhao - 15.0.7-1 +- Initial release diff --git a/libcxxabi-15.0.7.src.tar.xz b/libcxxabi-15.0.7.src.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..2848b81b5700a31ab851f8465197ed6767f07f32 Binary files /dev/null and b/libcxxabi-15.0.7.src.tar.xz differ diff --git a/libcxxabi-15.0.7.src.tar.xz.sig b/libcxxabi-15.0.7.src.tar.xz.sig new file mode 100644 index 0000000000000000000000000000000000000000..f94571d73f494fd1773f527dc23bb7a35ffc102a Binary files /dev/null and b/libcxxabi-15.0.7.src.tar.xz.sig differ