SHA256
2
0

Accepting request 176639 from devel:libraries:c_c++

Make use of external libatomic_ops -- openSUSE has it in a separate source package (forwarded request 176614 from jengelh)

OBS-URL: https://build.opensuse.org/request/show/176639
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gc?expand=0&rev=28
This commit is contained in:
Stephan Kulow 2013-06-05 09:51:41 +00:00 committed by Git OBS Bridge
commit c49f004bbb
3 changed files with 110 additions and 47 deletions

69
aarch64-support.patch Normal file
View File

@ -0,0 +1,69 @@
Index: gc-7.2/include/private/gcconfig.h
===================================================================
--- gc-7.2.orig/include/private/gcconfig.h
+++ gc-7.2/include/private/gcconfig.h
@@ -70,6 +70,13 @@
# define I386
# define mach_type_known
# endif
+# if defined(__aarch64__)
+# define AARCH64
+# if !defined(LINUX)
+# define NOSYS
+# define mach_type_known
+# endif
+# endif
# if defined(__arm) || defined(__arm__) || defined(__thumb__)
# define ARM32
# if !defined(LINUX) && !defined(NETBSD) && !defined(OPENBSD) \
@@ -250,6 +257,10 @@
# define IA64
# define mach_type_known
# endif
+# if defined(LINUX) && defined(__aarch64__)
+# define AARCH64
+# define mach_type_known
+# endif
# if defined(LINUX) && (defined(__arm) || defined(__arm__))
# define ARM32
# define mach_type_known
@@ -537,6 +548,7 @@
/* running Amdahl UTS4 */
/* S390 ==> 390-like machine */
/* running LINUX */
+ /* AARCH64 ==> ARM AArch64 */
/* ARM32 ==> Intel StrongARM */
/* IA64 ==> Intel IPF */
/* (e.g. Itanium) */
@@ -1899,6 +1911,31 @@
# endif
# endif
+# ifdef AARCH64
+# define CPP_WORDSZ 64
+# define MACH_TYPE "AARCH64"
+# define ALIGNMENT 8
+# ifndef HBLKSIZE
+# define HBLKSIZE 4096
+# endif
+# ifdef LINUX
+# define OS_TYPE "LINUX"
+# define LINUX_STACKBOTTOM
+# define DYNAMIC_LOADING
+ extern int __data_start[];
+# define DATASTART ((ptr_t)__data_start)
+ extern char _end[];
+# define DATAEND ((ptr_t)(&_end))
+# endif
+# ifdef NOSYS
+ /* __data_start is usually defined in the target linker script. */
+ extern int __data_start[];
+# define DATASTART ((ptr_t)__data_start)
+ extern void *__stack_base__;
+# define STACKBOTTOM ((ptr_t)__stack_base__)
+# endif
+# endif
+
# ifdef ARM32
# define CPP_WORDSZ 32
# define MACH_TYPE "ARM32"

View File

@ -1,3 +1,25 @@
-------------------------------------------------------------------
Sun May 26 20:09:26 UTC 2013 - jengelh@inai.de
- Make use of external libatomic_ops --
openSUSE has it in a separate source package
- Fix version: 7.2d is not a prerelease, so there is no need to
call it 7.1*
- More portable make install call; more robust file list
-------------------------------------------------------------------
Sat May 25 19:16:48 UTC 2013 - root@localhost
- libatomic_ops-aarch64.patch: update makefile to install missing headers,
don't use AO_EXPECT_FALSE.
-------------------------------------------------------------------
Sat May 18 08:10:09 UTC 2013 - schwab@suse.de
- aarch64-support.patch: aarch64 support for gc from upstream
- libatomic_ops-aarch64.patch: aarch64 support for libatomic_ops from
upstream add-aarch64-support branch
-------------------------------------------------------------------
Mon Mar 25 14:50:51 UTC 2013 - dmueller@suse.com

64
gc.spec
View File

@ -17,19 +17,21 @@
Name: gc
Version: 7.1.9.6
Version: 7.2d
Release: 0
%define src_ver 7.2d
Url: http://www.hpl.hp.com/personal/Hans_Boehm/gc/
Summary: A garbage collector for C and C++
License: BSD-3-Clause
Group: Development/Libraries/C and C++
Source: http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/%{name}-%{src_ver}.tar.gz
Source: http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/%name-%version.tar.gz
Patch1: aarch64-support.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: autoconf >= 2.64
BuildRequires: gcc-c++
BuildRequires: libtool
BuildRequires: pkg-config
BuildRequires: pkgconfig(atomic_ops)
%description
The Boehm-Demers-Weiser conservative garbage collector can be used as a
@ -71,22 +73,9 @@ deallocating memory that is no longer useful. The collector
automatically recycles memory when it determines that it can no longer
be otherwise accessed.
%package -n libatomic_ops-devel
Summary: Atomic memory update operations
Group: Development/Libraries/C and C++
Provides: libatomic_ops-static = %{version}-%{release}
Obsoletes: libatomic-ops-devel <= 1.2
Provides: libatomic-ops-devel = %{version}
%description -n libatomic_ops-devel
Provides implementations for atomic memory update operations on a
number of architectures. This allows direct use of these in reasonably
portable code. Unlike earlier similar packages, this one explicitly
considers memory barrier semantics, and allows the construction of code
that involves minimum overhead across a variety of architectures.
%prep
%setup -q -n %{name}-7.2
%patch1 -p1
%build
# refresh auto*/libtool to purge rpaths
@ -103,25 +92,18 @@ CPPFLAGS="-DUSE_GET_STACKBASE_FOR_MAIN"; export CPPFLAGS
--enable-large-config \
--enable-threads=posix \
--enable-parallel-mark \
--with-libatomic-ops=no
--with-libatomic-ops=yes
# --with-libatomic-ops=yes means to use the system library
make %{?_smp_mflags}
make %{?_smp_mflags} -C libatomic_ops
%install
%makeinstall
%makeinstall -C libatomic_ops
rm -rf $RPM_BUILD_ROOT/usr/share/gc # docs
rm -rf %{buildroot}%{_datadir}/libatomic_ops/{COPYING,*.txt}
rm -f %{buildroot}%{_libdir}/*.la
make install DESTDIR="%buildroot"
rm -Rf "%buildroot/%_datadir/gc" "%buildroot/%_libdir"/*.la
%check
%if !0%{?qemu_user_space_build}
make check
# fails on i586
make check -C libatomic_ops ||:
%endif
%post -n libgc1 -p /sbin/ldconfig
@ -131,27 +113,17 @@ make check -C libatomic_ops ||:
%files -n libgc1
%defattr(-, root, root)
%doc README.QUICK doc/README.*
%{_libdir}/lib*.so.*
%_libdir/libcord.so.1*
%_libdir/libgc*.so.1*
%files devel
%defattr(-, root, root)
%doc doc/[a-z]*
%{_libdir}/lib*.so
%{_libdir}/pkgconfig/bdw-gc.pc
%{_includedir}/gc.h
%{_includedir}/gc_cpp.h
%{_includedir}/gc
%files -n libatomic_ops-devel
%defattr(-,root,root,-)
%doc libatomic_ops/AUTHORS libatomic_ops/ChangeLog libatomic_ops/COPYING libatomic_ops/NEWS libatomic_ops/README
%doc libatomic_ops/doc/*.txt
%{_libdir}/pkgconfig/atomic_ops.pc
%{_includedir}/atomic_ops.h
%{_includedir}/atomic_ops_malloc.h
%{_includedir}/atomic_ops_stack.h
%{_includedir}/atomic_ops/
%{_libdir}/libatomic_ops.a
%{_libdir}/libatomic_ops_gpl.a
%_libdir/libcord.so
%_libdir/libgc*.so
%_libdir/pkgconfig/bdw-gc.pc
%_includedir/gc.h
%_includedir/gc_cpp.h
%_includedir/gc/
%changelog