Jerry James dcc9b78
# Only a static library is provided, so no debug information can be extracted.
173d1eb
%global debug_package %{nil}
173d1eb
Jerry James dcc9b78
# This package uses assembly to do its work.  This is the entire list of
Jerry James dcc9b78
# supported architectures understood by RPM, even those not currently supported
Jerry James dcc9b78
# by Fedora.  RPM hasn't heard about line continuations, hence the mess.
Jerry James dcc9b78
%global ffcall_arches %{ix86} x86_64 amd64 %{alpha} armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l armv7hl armv7hnl parisc hppa1.0 hppa1.1 hppa1.2 hppa2.0 ia64 m68k mips mipsel ppc ppc8260 ppc8560 ppc32dy4 ppciseries ppcpseries %{power64} s390 s390x %{sparc}
Jerry James dcc9b78
2d8e2ca
Name:           ffcall
2d8e2ca
Version:        1.10
f58b6e2
Release:        15.20120424cvs%{?dist}
2d8e2ca
Summary:        Libraries for foreign function call interfaces
2d8e2ca
2d8e2ca
Group:          System Environment/Libraries
2d8e2ca
License:        GPLv2+
173d1eb
URL:            http://www.gnu.org/software/libffcall/
173d1eb
# There has been no official release for several years, and the project web
173d1eb
# site encourages use of a CVS snapshot.  Make the tarball as follows:
173d1eb
#   cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/libffcall 
Jerry James dcc9b78
#       export -D 2012-04-24 ffcall
Jerry James dcc9b78
#   tar cJf ffcall-20120424cvs.tar.xz ffcall
Jerry James dcc9b78
Source0:        %{name}-20120424cvs.tar.xz
978f9ba
# This patch will not be sent upstream.  It removes the possibility of using
978f9ba
# mprotect() to make memory executable, as that runs afoul of SELinux.
Jerry James dcc9b78
Patch0:         %{name}-trampoline.patch
Jerry James dd17361
# Upstream is dead, so this patch will not be sent.  Update some uses of OABI
Jerry James dd17361
# on ARM to their EABI equivalents.
Jerry James dd17361
Patch1:         %{name}-arm.patch
Jerry James dcc9b78
Jerry James dcc9b78
Provides:       %{name}-static = %{version}-%{release}
2d8e2ca
Jerry James dcc9b78
ExclusiveArch:  %{ffcall_arches}
2d8e2ca
2d8e2ca
%description
2d8e2ca
This is a collection of four libraries which can be used to build
173d1eb
foreign function call interfaces in embedded interpreters.  The four
173d1eb
packages are:
173d1eb
 - avcall: calling C functions with variable arguments
173d1eb
 - vacall: C functions accepting variable argument prototypes
173d1eb
 - trampoline: closures as first-class C functions
173d1eb
 - callback: closures with variable arguments as first-class C functions
173d1eb
   (a reentrant combination of vacall and trampoline)
2d8e2ca
2d8e2ca
2d8e2ca
%prep
5d87966
%setup -q -n ffcall
978f9ba
%patch0
Jerry James dd17361
%patch1
978f9ba
978f9ba
# Remove prebuilt object files
978f9ba
find . -name \*.o | xargs rm -f
2d8e2ca
2d8e2ca
%build
978f9ba
export CFLAGS="$RPM_OPT_FLAGS -fPIC -DMAP_VARIABLE=2"
2d8e2ca
%configure
2d8e2ca
make # %{?_smp_mflags}
2d8e2ca
2d8e2ca
%install
2d8e2ca
mkdir -p $RPM_BUILD_ROOT%{_libdir}
2d8e2ca
mkdir -p $RPM_BUILD_ROOT%{_mandir}
2d8e2ca
make install DESTDIR=$RPM_BUILD_ROOT
2d8e2ca
rm -fr $RPM_BUILD_ROOT%{_datadir}/html
2d8e2ca
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
Jerry James dcc9b78
cd $RPM_BUILD_ROOT%{_mandir}/man3
Jerry James dcc9b78
Jerry James dcc9b78
# Advertise supported architectures
Jerry James 0a62d78
mkdir -p $RPM_BUILD_ROOT%{_rpmconfigdir}/macros.d
Jerry James 0a62d78
cat > $RPM_BUILD_ROOT%{_rpmconfigdir}/macros.d/macros.%{name} << EOF
Jerry James dcc9b78
# arches that ffcall supports
Jerry James dcc9b78
%%ffcall_arches %{ffcall_arches}
Jerry James dcc9b78
EOF
Jerry James dcc9b78
Jerry James dcc9b78
# Fix man pages with overly generic names (bz 800360)
Jerry James dcc9b78
for page in *; do
Jerry James dcc9b78
  mv $page %{name}-$page
Jerry James dcc9b78
done
2d8e2ca
2d8e2ca
%files
2d8e2ca
%doc README NEWS COPYING
2d8e2ca
%doc avcall/avcall.html
2d8e2ca
%doc callback/callback.html
2d8e2ca
%doc callback/trampoline_r/trampoline_r.html
2d8e2ca
%doc trampoline/trampoline.html
2d8e2ca
%doc vacall/vacall.html
2d8e2ca
%{_libdir}/*.a
2d8e2ca
%{_includedir}/*
2d8e2ca
%{_mandir}/man*/*
Jerry James 0a62d78
%{_rpmconfigdir}/macros.d/macros.%{name}
2d8e2ca
2d8e2ca
2d8e2ca
%changelog
f58b6e2
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-15.20120424cvs
f58b6e2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
f58b6e2
Jerry James 0a62d78
* Mon Feb  3 2014 Jerry James <loganjerry@gmail.com> - 1.10-14.20120424cvs
Jerry James 0a62d78
- Update location of rpm macro file for rpm >= 4.11
Jerry James 0a62d78
Jerry James cbbc846
* Fri Sep  6 2013 Jerry James <loganjerry@gmail.com> - 1.10-13.20120424cvs
Jerry James cbbc846
- Update -arm patch to really use the EABI and hopefully fix clisp
Jerry James cbbc846
Jerry James dd17361
* Wed Sep  4 2013 Jerry James <loganjerry@gmail.com> - 1.10-12.20120424cvs
Jerry James dd17361
- Add -arm patch to fix clisp build failure
Jerry James dd17361
80cc160
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-11.20120424cvs
80cc160
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
80cc160
Jerry James dcc9b78
* Wed Mar 27 2013 Jerry James <loganjerry@gmail.com> - 1.10-10.20120424cvs
Jerry James dcc9b78
- Update to CVS 20120424
Jerry James dcc9b78
- List all architectures supported by this package (bz 925335)
Jerry James dcc9b78
- Rename man pages to avoid conflicts (bz 800360)
Jerry James dcc9b78
- Add Provides: ffcall-static
Jerry James dcc9b78
7c6a64b
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-9.20100903cvs
7c6a64b
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
7c6a64b
a9153ae
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-8.20100903cvs
a9153ae
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
a9153ae
978f9ba
* Tue Jan 10 2012 Jerry James <loganjerry@gmail.com> - 1.10-7.20100903cvs
978f9ba
- Clean out prebuilt object files
978f9ba
- Add trampoline patch to force use of mmap() to get executable memory
978f9ba
978f9ba
* Mon Jan  9 2012 Jerry James <loganjerry@gmail.com> - 1.10-6.20100903cvs
173d1eb
- Update to CVS 20100903
173d1eb
- Minor spec file cleanups
173d1eb
ab62980
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-5.20080704cvs.1
ab62980
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
ab62980
e2e8764
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-4.20080704cvs.1
e2e8764
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
e2e8764
bcb6675
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-3.20080704cvs.1
bcb6675
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
bcb6675
608d45d
* Wed Dec 10 2008 Jochen Schmitt <Jochen herr-schmitt de> - 1.10-2.20080704cvs.1
608d45d
- Fix -FPIC issue (BZ #475112)
608d45d
5d87966
* Fri Jul  4 2008 Gerard Milmeister <gemi@bluewin.ch> - 1.10-2.20080704cvs
5d87966
- update to cvs 20080704
5d87966
- support for ppc64
5d87966
2d8e2ca
* Mon Feb 25 2008 Gerard Milmeister <gemi@bluewin.ch> - 1.10-1
2d8e2ca
- first Fedora release