diff --git a/.gitignore b/.gitignore index e69de29..be368c4 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/libcxx-3.8.0.src.tar.xz diff --git a/libcxx.spec b/libcxx.spec new file mode 100644 index 0000000..0463b70 --- /dev/null +++ b/libcxx.spec @@ -0,0 +1,97 @@ +# If you need to bootstrap this, turn this on. +# Otherwise, you have a loop with libcxxabi +%global bootstrap 1 + +Name: libcxx +Version: 3.8.0 +Release: 3%{?dist} +Summary: C++ standard library targeting C++11 +License: MIT or NCSA +URL: http://libcxx.llvm.org/ +Source0: http://llvm.org/releases/%{version}/libcxx-%{version}.src.tar.xz +BuildRequires: clang llvm-devel cmake +%if %{bootstrap} < 1 +BuildRequires: libcxxabi-devel +%endif +# PPC64 (on EL7) doesn't like this code. +# /builddir/build/BUILD/libcxx-3.8.0.src/include/thread:431:73: error: '(9.223372036854775807e+18 / 1.0e+9)' is not a constant expression +# _LIBCPP_CONSTEXPR duration _Max = nanoseconds::max(); +ExcludeArch: ppc64 ppc64le + +%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}%{?_isa} = %{version}-%{release} +%if %{bootstrap} < 1 +Requires: libcxxabi-devel +%endif + + +%description devel +%{summary}. + +%prep +%setup -q -n %{name}-%{version}.src + +%build +mkdir _build +cd _build +# Clang in older releases than f24 can't build this code without crashing. +# So, we use gcc there. But the really old version in RHEL 6 works. Huh. +%cmake .. \ +%if 0%{?rhel} == 6 + -DCMAKE_C_COMPILER=/usr/bin/clang \ + -DCMAKE_CXX_COMPILER=/usr/bin/clang++ \ +%else +%if 0%{?fedora} >= 24 + -DCMAKE_C_COMPILER=/usr/bin/clang \ + -DCMAKE_CXX_COMPILER=/usr/bin/clang++ \ +%else + -DCMAKE_C_COMPILER=/usr/bin/gcc \ + -DCMAKE_CXX_COMPILER=/usr/bin/g++ \ +%endif +%endif + -DLLVM_CONFIG=%{_bindir}/llvm-config \ +%if %{bootstrap} < 1 + -DLIBCXX_CXX_ABI=libcxxabi \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS=%{_includedir} \ +%endif +%if %{__isa_bits} == 64 + -DLIBCXX_LIBDIR_SUFFIX:STRING=64 \ +%endif + -DCMAKE_BUILD_TYPE=RelWithDebInfo + + +make %{?_smp_mflags} + +%install +cd _build +make install DESTDIR=%{buildroot} + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%license LICENSE.TXT +%doc CREDITS.TXT TODO.TXT +%{_libdir}/libc++.so.* + +%files devel +%{_includedir}/c++/ +%{_libdir}/libc++.so + +%changelog +* Thu May 19 2016 Tom Callaway - 3.8.0-3 +- use gcc on el7, fedora < 24. use clang on el6 and f24+ + MAGIC. +- bootstrap on + +* Tue May 3 2016 Tom Callaway - 3.8.0-2 +- bootstrap off + +* Tue May 3 2016 Tom Callaway - 3.8.0-1 +- initial package +- bootstrap on diff --git a/sources b/sources index e69de29..7858a06 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +d6e0bdbbee39f7907ad74fd56d03b88a libcxx-3.8.0.src.tar.xz