SHA256
1
0
forked from pool/pocl
pocl/pocl.spec

151 lines
4.8 KiB
RPMSpec

#
# spec file for package pocl
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2014 Guillaume GARDET <guillaume@opensuse.org>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define sover 1.7.0
Name: pocl
Version: 0.14
Release: 0
Summary: Portable Computing Language - an OpenCL implementation
# The whole code is under MIT
# except include/utlist.h which is under BSD (and unbundled) and
# except lib/kernel/vecmath which is under GPLv3+ or LGPLv3+ (and unbundled in future)
License: MIT
Group: Productivity/Other
Url: http://portablecl.org/
Source0: http://portablecl.org/downloads/%{name}-%{version}.tar.gz
Source99: pocl-rpmlintrc
Patch0: pocl-disable-tests.diff
%if 0%{?suse_version} > 1325
BuildRequires: libboost_headers-devel
%else
BuildRequires: boost-devel
%endif
BuildRequires: clang4-devel
BuildRequires: cmake >= 2.8.12
BuildRequires: libtool
BuildRequires: libtool-ltdl-devel
BuildRequires: llvm4-devel
BuildRequires: ncurses-devel
BuildRequires: ninja
BuildRequires: opencl-headers
BuildRequires: pkgconfig
BuildRequires: uthash-devel
BuildRequires: pkgconfig(OpenCL)
BuildRequires: pkgconfig(glew)
BuildRequires: pkgconfig(hwloc)
Requires: clang4
Requires: libstdc++-devel
Requires: libut2
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# Only armv7l is supported
# PPC support is currently broken, due to path problems
# s390(x) and aarch64 also not supported, so use ExclusiveArch
ExclusiveArch: %{ix86} x86_64 armv7l armv7hl
%description
Portable Computing Language (pocl) aims to become a MIT-licensed open source
implementation of the OpenCL standard which can be easily adapted for new targets
and devices, both for homogeneous CPU and heterogenous GPUs/accelerators.
pocl uses Clang as an OpenCL C frontend and LLVM for the kernel compiler
implementation, and as a portability layer. Thus, if your desired target
has an LLVM backend, it should be able to get OpenCL support easily by using pocl.
The goal is to accomplish improved performance portability using a kernel
compiler that can generate multi-work-item work-group functions that exploit
various types of parallel hardware resources: VLIW, superscalar, SIMD, SIMT,
multicore, multithread ...
Additional purpose of the project is to serve as a research platform for
issues in parallel programming on heterogeneous platforms.
%package devel
Summary: Portable Computing Language - development files
Group: Development/Languages/Other
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: opencl-headers
%description devel
Portable Computing Language (pocl) aims to become a MIT-licensed open source
implementation of the OpenCL standard which can be easily adapted for new targets
and devices, both for homogeneous CPU and heterogenous GPUs/accelerators.
This Subpackage provides the development files needed for pocl.
%prep
%setup -q
%patch0 -p1
%build
%define __builder ninja
%cmake ..\
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed -Wl,-z,now" \
-DCMAKE_MODULE_LINKER_FLAGS="-Wl,--as-needed -Wl,-z,now" \
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed -Wl,-z,now" \
-DWITH_LLVM_CONFIG=%{_bindir}/llvm-config
%make_jobs
# docs
#cd doc/sphinx
#make html
%install
%cmake_install
# FIXME - should be handled upstream
mv %{buildroot}%{_prefix}%{_libdir} %{buildroot}%{_libdir}
mv %{buildroot}%{_prefix}%{_sysconfdir} %{buildroot}%{_sysconfdir}
# Unbundle vecmath
#rm -vf %{buildroot}/%{_libdir}/pocl/vecmath/
#ln -vs %{_includedir}/vecmath %{buildroot}/%{_libdir}/pocl/vecmath
# <visit0r> but you need to run the .py to generate the files under the pocl dir
%check
#cd build
#ctest %{?_smp_mflags} ||:
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr(-,root,root)
%doc CHANGES README doc/sphinx/source/*.rst
%dir %{_sysconfdir}/OpenCL/
%dir %{_sysconfdir}/OpenCL/vendors
%{_sysconfdir}/OpenCL/vendors/pocl.icd
%{_bindir}/poclcc
%{_libdir}/libpocl.so.1
%{_libdir}/libpocl.so.%{sover}
%{_libdir}/libpoclu.so.1
%{_libdir}/libpoclu.so.%{sover}
%{_libdir}/pocl/
%{_datadir}/pocl/
%files devel
%defattr(-,root,root)
%{_libdir}/libpoclu.so
%{_libdir}/libpocl.so
%{_libdir}/pkgconfig/pocl.pc
%{_includedir}/poclu.h
%changelog