Blame SPECS/llvm.spec

d437c1
%if 0%{?rhel} == 6
d437c1
%define rhel6 1
d437c1
%endif
d437c1
d437c1
# llvm works on the 64-bit versions of these, but not the 32 versions.
d437c1
# consequently we build swrast on them instead of llvmpipe.
d437c1
ExcludeArch: ppc s390 %{?rhel6:s390x}
d437c1
d437c1
%global svndate 20131023
d437c1
#%global prerel rc3
d437c1
%global downloadurl http://llvm.org/%{?prerel:pre-}releases/%{version}%{?prerel:/%{prerel}}
d437c1
d437c1
Name:           mesa-private-llvm
d437c1
Version:        3.3
d437c1
#Release:        0.4.%{prerel}%{?dist}
c6b5fb
Release:        0.8.%{svndate}%{?dist}
d437c1
Summary:        llvm engine for Mesa
d437c1
d437c1
Group:		System Environment/Libraries
d437c1
License:        NCSA
d437c1
URL:            http://llvm.org/
d437c1
#Source0:        %{downloadurl}/llvm-source-%{version}%{?prerel:%{prerel}}.tar.gz
d437c1
Source0:	llvm-%{svndate}.tar.xz
d437c1
Source1:	make-llvm-snapshot.sh
d437c1
# multilib fixes
d437c1
Source2:        llvm-Config-config.h
d437c1
Source3:        llvm-Config-llvm-config.h
d437c1
d437c1
# Data files should be installed with timestamps preserved
d437c1
Patch0:         llvm-2.6-timestamp.patch
d437c1
Patch1:         llvm-drop-patch-version-number.patch
d437c1
d437c1
BuildRequires:  bison
d437c1
BuildRequires:  chrpath
d437c1
BuildRequires:  flex
d437c1
BuildRequires:  gcc-c++ >= 3.4
d437c1
BuildRequires:  groff
d437c1
BuildRequires:  libtool-ltdl-devel
d437c1
BuildRequires:  zip
d437c1
# for DejaGNU test suite
d437c1
BuildRequires:  dejagnu tcl-devel python
d437c1
d437c1
%description
d437c1
This package contains the LLVM-based runtime support for Mesa.  It is not a
d437c1
fully-featured build of LLVM, and use by any package other than Mesa is not
d437c1
supported.
d437c1
d437c1
%package devel
d437c1
Summary:        Libraries and header files for Mesa's llvm engine
d437c1
Group:          Development/Libraries
d437c1
Requires:       %{name}%{?_isa} = %{version}-%{release}
d437c1
Requires:       libstdc++-devel >= 3.4
d437c1
d437c1
%description devel
d437c1
This package contains library and header files needed to build the LLVM
d437c1
support in Mesa.
d437c1
d437c1
%prep
d437c1
#setup -q -n llvm-%{version}%{?prerel}.src
d437c1
%setup -q -n llvm-%{svndate}
d437c1
#setup -q -n llvm.src
d437c1
rm -r -f tools/clang
d437c1
d437c1
# llvm patches
d437c1
%patch0 -p1 -b .timestamp
d437c1
%patch1 -p1 -b .version
d437c1
d437c1
# fix ld search path
d437c1
sed -i 's|/lib /usr/lib $lt_ld_extra|%{_libdir} $lt_ld_extra|' \
d437c1
    ./configure
d437c1
d437c1
%build
d437c1
%configure \
d437c1
  --prefix=%{_prefix} \
d437c1
  --libdir=%{_libdir} \
d437c1
  --includedir=%{_includedir}/mesa-private \
d437c1
  --with-extra-ld-options=-Wl,-Bsymbolic,--default-symver \
d437c1
  --enable-targets=host \
d437c1
%ifnarch s390x
d437c1
  --enable-experimental-targets=R600 \
d437c1
%endif
d437c1
  --enable-bindings=none \
d437c1
  --enable-debug-runtime \
d437c1
  --enable-jit \
d437c1
  --enable-shared \
d437c1
  --disable-assertions \
d437c1
  --disable-docs \
d437c1
  --disable-libffi \
d437c1
%ifarch armv7hl armv7l
d437c1
  --with-cpu=cortex-a8 \
d437c1
  --with-tune=cortex-a8 \
d437c1
  --with-arch=armv7-a \
d437c1
  --with-float=hard \
d437c1
  --with-fpu=vfpv3-d16 \
d437c1
  --with-abi=aapcs-linux \
d437c1
%endif
d437c1
d437c1
# FIXME file this
d437c1
# configure does not properly specify libdir or includedir
d437c1
sed -i 's|(PROJ_prefix)/lib|(PROJ_prefix)/%{_lib}|g' Makefile.config
d437c1
sed -i 's|(PROJ_prefix)/include|&/mesa-private|g' Makefile.config
d437c1
d437c1
# mangle the library name
d437c1
sed -i 's|^LLVMVersion.*|&-mesa|' Makefile.config
d437c1
d437c1
# FIXME upstream need to fix this
d437c1
# llvm-config.cpp hardcodes lib in it
d437c1
sed -i 's|ActiveLibDir = ActivePrefix + "/lib"|ActiveLibDir = ActivePrefix + "/%{_lib}"|g' tools/llvm-config/llvm-config.cpp
d437c1
sed -i 's|ActiveIncludeDir = ActivePrefix + "/include|&/mesa-private|g' tools/llvm-config/llvm-config.cpp
d437c1
d437c1
make %{_smp_mflags} VERBOSE=1 OPTIMIZE_OPTION="%{optflags} -fno-strict-aliasing"
d437c1
d437c1
%install
d437c1
make install DESTDIR=%{buildroot}
d437c1
d437c1
# rename the few binaries we're keeping
d437c1
mv %{buildroot}%{_bindir}/llvm-config %{buildroot}%{_bindir}/%{name}-config-%{__isa_bits}
d437c1
d437c1
pushd %{buildroot}%{_includedir}/mesa-private/llvm/Config
d437c1
mv config.h config-%{__isa_bits}.h
d437c1
cp -p %{SOURCE2} config.h
d437c1
mv llvm-config.h llvm-config-%{__isa_bits}.h
d437c1
cp -p %{SOURCE3} llvm-config.h
d437c1
popd
d437c1
d437c1
file %{buildroot}/%{_bindir}/* %{buildroot}/%{bindir}/*.so | \
d437c1
    awk -F: '$2~/ELF/{print $1}' | \
d437c1
    xargs -r chrpath -d
d437c1
d437c1
# FIXME file this bug
d437c1
sed -i 's,ABS_RUN_DIR/lib",ABS_RUN_DIR/%{_lib}/%{name}",' \
d437c1
  %{buildroot}%{_bindir}/%{name}-config-%{__isa_bits}
d437c1
d437c1
rm -f %{buildroot}%{_libdir}/*.a
d437c1
d437c1
# remove documentation makefiles:
d437c1
# they require the build directory to work
d437c1
find examples -name 'Makefile' | xargs -0r rm -f
d437c1
d437c1
# RHEL: strip out most binaries, most libs, and man pages
d437c1
ls %{buildroot}%{_bindir}/* | grep -v bin/mesa-private | xargs rm -f
d437c1
ls %{buildroot}%{_libdir}/* | grep -v libLLVM | xargs rm -f
d437c1
rm -rf %{buildroot}%{_mandir}/man1
d437c1
d437c1
# RHEL: Strip out some headers Mesa doesn't need
d437c1
rm -rf %{buildroot}%{_includedir}/mesa-private/llvm/{Analysis,Assembly}
d437c1
rm -rf %{buildroot}%{_includedir}/mesa-private/llvm/{DebugInfo,Object,Option}
d437c1
rm -rf %{buildroot}%{_includedir}/mesa-private/llvm/TableGen
d437c1
c6b5fb
%if 0
d437c1
%check
d437c1
# the Koji build server does not seem to have enough RAM
d437c1
# for the default 16 threads
d437c1
d437c1
# LLVM test suite failing on ARM, PPC64 and s390(x)
d437c1
make check LIT_ARGS="-v -j4" \
d437c1
%ifarch %{arm} ppc64 s390x
d437c1
     | tee llvm-testlog-%{_arch}.txt
d437c1
%else
d437c1
 %{nil}
d437c1
%endif
c6b5fb
%endif
d437c1
d437c1
%post -p /sbin/ldconfig
d437c1
%postun -p /sbin/ldconfig
d437c1
d437c1
# also unlike fedora, we don't alternatives around llvm-config
d437c1
# mesa knows to append -%{__isa_bits}
d437c1
d437c1
%files
d437c1
%defattr(-,root,root,-)
d437c1
%doc LICENSE.TXT
d437c1
%{_libdir}/libLLVM-3.3-mesa.so
d437c1
d437c1
%files devel
d437c1
%defattr(-,root,root,-)
d437c1
%{_bindir}/%{name}-config-%{__isa_bits}
d437c1
%{_includedir}/mesa-private/llvm
d437c1
%{_includedir}/mesa-private/llvm-c
d437c1
d437c1
%changelog
c6b5fb
* Tue Jan 28 2014 Adam Jackson <ajax@redhat.com> 3.3-0.8.20131023
c6b5fb
- Disable %%check, only fails in places that don't matter to Mesa (#1028575)
c6b5fb
c6b5fb
* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 3.3-0.7.20131023
c6b5fb
- Mass rebuild 2014-01-24
c6b5fb
c6b5fb
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 3.3-0.6.20131023
c6b5fb
- Mass rebuild 2013-12-27
c6b5fb
d437c1
* Wed Oct 23 2013 Jerome Glisse <jglisse@redhat.com> 3.3-0.5.20131023
d437c1
- 3.3.1 snapshot
d437c1
d437c1
* Tue Aug 20 2013 Adam Jackson <ajax@redhat.com> 3.3-0.4.rc3
d437c1
- Build with -fno-strict-aliasing
d437c1
d437c1
* Tue Jun 18 2013 Adam Jackson <ajax@redhat.com> 3.3-0.3.rc3
d437c1
- Port to RHEL6
d437c1
- Don't bother building R600 on s390x
d437c1
d437c1
* Tue Jun 11 2013 Adam Jackson <ajax@redhat.com> 3.3-0.2.rc3
d437c1
- 3.3 rc3
d437c1
- Drop tblgen
d437c1
- Strip out some headers
d437c1
d437c1
* Tue May 14 2013 Adam Jackson <ajax@redhat.com> 3.3-0.1.rc1
d437c1
- Update to 3.3 rc1
d437c1
- Move library to %%{_libdir} to avoid rpath headaches
d437c1
- Link with -Bsymbolic and --default-symver
d437c1
- --disable-libffi
d437c1
- Misc spec cleanup
d437c1
d437c1
* Wed Dec 05 2012 Adam Jackson <ajax@redhat.com> 3.1-13
d437c1
- Forked spec for RHEL7 Mesa's private use
d437c1
  - no ocaml support
d437c1
  - no doxygen build
d437c1
  - no clang support
d437c1
  - no static archives
d437c1
  - no libraries, binaries, or manpages not needed by Mesa