#
# Conditional build:
-# _without_dist_kernel
-#
-# TODO:
-# - kernel modules (SMP)
+%bcond_without dist_kernel # without distribution kernel
+%bcond_without kernel # don't build kernel modules
+%bcond_without smp # don't build SMP module
+%bcond_without userspace # don't build userspace tools
+%bcond_with verbose # verbose build (V=1)
+
+%define _min_x11 6.8.0
+
+%if %{without kernel}
+%undefine with_dist_kernel
+%endif
Summary: Linux Drivers for ATI graphics accelerators
Summary(pl): Sterowniki do akceleratorów graficznych ATI
-Name: XFree86-driver-firegl
-Version: 3.2.0
-Release: 1
-License: ATI Binary
+Name: X11-driver-firegl
+Version: 8.10.19
+%define _rel 2
+Release: %{_rel}
+License: ATI Binary (parts are GPL)
Vendor: ATI
Group: X11/XFree86
-#URL: http://www.ati.com/support/drivers/linux/radeon-linux.html
-#Source0: http://pdownload.mii.instacontent.net/ati/drivers/fglrx-glc22-4.2.0-%{version}.i586.rpm
-URL: http://www.schneider-digital.de/html/body_download_ati.html
-Source0: http://www.schneider-digital.de/download/ati/glx1_linux_X4.3.zip
-# Source0-md5: 09142a7f016e76739b86e70d8e624d77
+%ifarch %{ix86}
+Source0: http://www2.ati.com/drivers/linux/fglrx_6_8_0-%{version}-1.i386.rpm
+# Source0-md5: a3ddb544071b1878ed19984c60623346
+%endif
+%ifarch amd64
+Source1: http://www2.ati.com/drivers/linux/fglrx64_6_8_0-%{version}-1.x86_64.rpm
+# Source1-md5: ca724fda36ecf6c8a60a74e3a1528829
+%endif
Patch0: firegl-panel.patch
+Patch1: firegl-panel-ugliness.patch
+Patch2: %{name}-kernel-2_6_11.patch
+Patch3: %{name}-kh.patch
+URL: http://www.ati.com/support/drivers/linux/radeon-linux.html
BuildRequires: cpio
-%{!?_without_dist_kernel:BuildRequires: kernel-headers >= 2.2.0 }
-BuildRequires: rpm-utils
-BuildRequires: rpmbuild(macros) >= 1.118
-BuildRequires: unzip
-Requires: XFree86-Xserver
-Requires: XFree86-libs >= 4.2.0
-Requires: XFree86-modules >= 4.2.0
-Requires: kernel-video-firegl = %{version}
-Provides: XFree86-OpenGL-core
-Conflicts: XFree86-OpenGL-devel <= 4.2.0-3
-ExclusiveArch: i586 i686 athlon
-BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%{?with_dist_kernel:BuildRequires: kernel-module-build >= 2.6.7}
+BuildRequires: rpmbuild(macros) >= 1.153
+%{?with_userspace:BuildRequires: qt-devel}
+#BuildRequires: X11-devel >= %{_min_x11} # disabled for now
+BuildRequires: fix_amd64_build
+Requires: X11-OpenGL-core >= %{_min_x11}
+Requires: X11-Xserver
+Requires: X11-driver-firegl(kernel)
+Requires: X11-libs >= %{_min_x11}
+Requires: X11-modules >= %{_min_x11}
+Provides: X11-OpenGL-libGL
+Provides: XFree86-OpenGL-libGL
Obsoletes: Mesa
-Obsoletes: XFree86-OpenGL-core
+Obsoletes: X11-OpenGL-libGL
+Obsoletes: XFree86-OpenGL-libGL
+Obsoletes: XFree86-driver-firegl
+ExclusiveArch: i586 i686 athlon pentium3 pentium4 amd64
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _noautoreqdep libGL.so.1.2
+%define _noautoreqdep libGL.so.1
%define _prefix /usr/X11R6
%define _mandir %{_prefix}/man
%package -n kernel-video-firegl
Summary: ATI kernel module for FireGL support
Summary(pl): Modu³ j±dra oferuj±cy wsparcie dla ATI FireGL
-Release: %{release}@%{_kernel_ver_str}
+Release: %{_rel}@%{_kernel_ver_str}
License: ATI
Vendor: ATI
Group: Base/Kernel
-%{!?_without_dist_kernel:%requires_releq_kernel_up}
-PreReq: modutils >= 2.3.18-2
+%{?with_dist_kernel:%requires_releq_kernel_up}
Requires(post,postun): /sbin/depmod
+Provides: X11-driver-firegl(kernel)
%description -n kernel-video-firegl
ATI kernel module for FireGL support.
%description -n kernel-video-firegl -l pl
Modu³ j±dra oferuj±cy wsparcie dla ATI FireGL.
+%package -n kernel-smp-video-firegl
+Summary: ATI kernel module for FireGL support
+Summary(pl): Modu³ j±dra oferuj±cy wsparcie dla ATI FireGL
+Release: %{_rel}@%{_kernel_ver_str}
+License: ATI
+Vendor: ATI
+Group: Base/Kernel
+%{?with_dist_kernel:%requires_releq_kernel_smp}
+Requires(post,postun): /sbin/depmod
+Provides: X11-driver-firegl(kernel)
+
+%description -n kernel-smp-video-firegl
+ATI kernel module for FireGL support.
+
+%description -n kernel-smp-video-firegl -l pl
+Modu³ j±dra oferuj±cy wsparcie dla ATI FireGL.
+
%prep
%setup -q -c -T
-unzip %{SOURCE0}
-mv X4.3.0-%{version}-3/* .
-rpm2cpio fglrx-glc22-4.3.0-%{version}.i586.rpm | cpio -i -d
-bzip2 -d -v usr/X11R6/bin/*.bz2
-mkdir panel_src
-tar -xzf usr/src/fglrx_panel_sources.tgz -C panel_src
+%ifarch amd64
+rpm2cpio %{SOURCE1} | cpio -i -d
+%else
+rpm2cpio %{SOURCE0} | cpio -i -d
+%endif
+install -d panel_src
+tar -xzf usr/src/ATI/fglrx_panel_sources.tgz -C panel_src
+
%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%{?with_dist_kernel:%patch3 -p1}
%build
-cd lib/modules/fglrx/build_mod/
-cp make.sh make.sh.org && rm -f make.sh
-sed -e 's#gcc#%{kgcc}#g' -e 's#`id -u` -ne 0#`id -u` -ne `id -u`#g' make.sh.org > make.sh
-chmod 755 make.sh
-./make.sh
-cd ../../../../panel_src
-%{__make} MK_QTDIR=/usr \
+%if %{with kernel}
+cd lib/modules/fglrx/build_mod
+cp -f 2.6.x/Makefile .
+for cfg in %{?with_dist_kernel:%{?with_smp:smp} up}%{!?with_dist_kernel:nondist}; do
+ if [ ! -r "%{_kernelsrcdir}/config-$cfg" ]; then
+ exit 1
+ fi
+ rm -rf include
+ install -d include/{linux,config}
+ ln -sf %{_kernelsrcdir}/config-$cfg .config
+ ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h include/linux/autoconf.h
+ ln -sf %{_kernelsrcdir}/include/asm-%{_target_base_arch} include/asm
+%if %{without dist_kernel}
+ ln -sf %{_kernelsrcdir}/scripts
+%endif
+ touch include/config/MARKER
+ %{__make} -C %{_kernelsrcdir} clean \
+ RCS_FIND_IGNORE="-name '*.ko' -o" \
+ M=$PWD O=$PWD \
+ %{?with_verbose:V=1}
+ %{__make} -C %{_kernelsrcdir} modules \
+ M=$PWD O=$PWD \
+ %{?with_verbose:V=1}
+ mv fglrx{,-$cfg}.ko
+done
+cd -
+%endif
+
+%if %{with userspace}
+%{__make} -C panel_src \
+ CCFLAGS="%{rpmcflags} -DFGLRX_USE_XEXTENSIONS" \
+ MK_QTDIR=/usr \
LIBQT_DYN=qt-mt
+%endif
%install
rm -rf $RPM_BUILD_ROOT
+
+%if %{with kernel}
+cd lib/modules/fglrx/build_mod
+install -d $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}{,smp}/misc
+
+install fglrx-%{?with_dist_kernel:up}%{!?with_dist_kernel:nondist}.ko \
+ $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc/fglrx.ko
+%if %{with smp} && %{with dist_kernel}
+install fglrx-smp.ko \
+ $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}smp/misc/fglrx.ko
+%endif
+cd -
+%endif
+
+%if %{with userspace}
install -d $RPM_BUILD_ROOT{%{_bindir},%{_libdir},%{_includedir}/X11/extensions} \
- $RPM_BUILD_ROOT{/lib/modules/%{_kernel_ver}/misc/,/usr/lib}
+ $RPM_BUILD_ROOT/usr/{%{_lib},include/GL}
-install lib/modules/fglrx/build_mod/fglrx.o $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc/
+install usr/X11R6/bin/{fgl_glxgears,fglrxconfig,fglrxinfo} \
+ $RPM_BUILD_ROOT%{_bindir}
+install panel_src/fireglcontrol.qt3.gcc%(gcc -dumpversion) \
+ $RPM_BUILD_ROOT%{_bindir}/fireglcontrol
+cp -r usr/X11R6/%{_lib}/* $RPM_BUILD_ROOT%{_libdir}
-install usr/X11R6/bin/{fgl_glxgears,fglrxconfig,fglrxinfo} $RPM_BUILD_ROOT%{_bindir}
-install panel_src/{fireglcontrol.qt3.gcc3.3,fireglcontrol} $RPM_BUILD_ROOT%{_bindir}
-cp -r usr/X11R6/lib/* $RPM_BUILD_ROOT%{_libdir}/
+ln -sf libGL.so.1 $RPM_BUILD_ROOT%{_libdir}/libGL.so
-cd $RPM_BUILD_ROOT%{_libdir}
-ln -s libGL.so.* libGL.so
-ln -s %{_libdir}/libGL.so $RPM_BUILD_ROOT/usr/lib/libGL.so
+# OpenGL ABI for Linux compatibility
+ln -sf %{_libdir}/libGL.so.1 $RPM_BUILD_ROOT/usr/%{_lib}/libGL.so.1
+ln -sf %{_libdir}/libGL.so $RPM_BUILD_ROOT/usr/%{_lib}/libGL.so
+
+install usr/include/GL/*.h $RPM_BUILD_ROOT/usr/include/GL
+install usr/X11R6/include/X11/extensions/*.h $RPM_BUILD_ROOT%{_includedir}/X11/extensions
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
%postun -n kernel-video-firegl
%depmod %{_kernel_ver}
+%post -n kernel-smp-video-firegl
+%depmod %{_kernel_ver}smp
+
+%postun -n kernel-smp-video-firegl
+%depmod %{_kernel_ver}smp
+
+%if %{with userspace}
%files
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/*
-%attr(755,root,root) /usr/lib/lib*.so*
-%attr(755,root,root) %{_libdir}/lib*.so*
-%attr(755,root,root) %{_libdir}/modules/*/*.so
-%attr(755,root,root) %{_libdir}/modules/*/*.o
-%attr(644,root,root) %{_libdir}/modules/*/*.a
-
+%attr(755,root,root) %{_libdir}/libGL.so.*.*
+%attr(755,root,root) %{_libdir}/libGL.so
+%attr(755,root,root) %{_libdir}/libfglrx_gamma.so.*.*
+# Linux OpenGL ABI compatibility symlinks
+%attr(755,root,root) /usr/%{_lib}/libGL.so.1
+%attr(755,root,root) /usr/%{_lib}/libGL.so
+
+%attr(755,root,root) %{_libdir}/modules/dri/fglrx_dri.so
+%attr(755,root,root) %{_libdir}/modules/drivers/fglrx_drv.o
+%{_libdir}/modules/linux/libfglrxdrm.a
+
+# -devel
+#%attr(755,root,root) %{_libdir}/libfglrx_gamma.so
+#%{_includedir}/X11/include/libfglrx_gamma.h
+#/usr/include/GL/glxATI.h
+
+# -static
+#%{_libdir}/libfglrx_gamma.a
+%endif
+
+%if %{with kernel}
%files -n kernel-video-firegl
%defattr(644,root,root,755)
-/lib/modules/%{_kernel_ver}/misc/*.o*
+/lib/modules/%{_kernel_ver}/misc/*.ko*
+
+%if %{with smp} && %{with dist_kernel}
+%files -n kernel-smp-video-firegl
+%defattr(644,root,root,755)
+/lib/modules/%{_kernel_ver}smp/misc/*.ko*
+%endif
+%endif