File ipu6-camera-hal.spec of Package ipu6-camera-hal
%global commit cb00bdd254fdcc71795482dd61ac35ca32adb93a
%global commitdate 20240624
%global shortcommit %(c=%{commit}; echo ${c:0:7})
Name: ipu6-camera-hal
Summary: Hardware abstraction layer for Intel IPU6
URL: https://github.com/intel/ipu6-camera-hal
Version: 1.0.3+git%{commitdate}.%{shortcommit}
Release: 0
License: Apache-2.0
Group: Hardware/Camera
Source0: https://github.com/intel/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz
Source1: 60-intel-ipu6.rules
Source2: v4l2-relayd-adl
Source3: v4l2-relayd-tgl
Source4: v4l2-relayd-mtl
Source5: intel_ipu6_isys.conf
Patch0: add-configs-for-v4l2loopback-and-cheese.patch
BuildRequires: systemd-rpm-macros
BuildRequires: ipu6-camera-bins-devel
BuildRequires: cmake
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: libexpat-devel
BuildRequires: fdupes
BuildRequires: pkgconfig(libdrm)
#!BuildIgnore: gstreamer-plugins-icamerasrc
#!BuildIgnore: ipu6-camera-bins-firmware
#!BuildIgnore: ivsc-firmware
#!BuildIgnore: v4l2-relayd
#!BuildIgnore: intel-ipu6-kmp-default
ExclusiveArch: x86_64
BuildRequires: ipu6-camera-bins
%description
ipu6-camera-hal provides the basic hardware access APIs for IPU6.
%package devel
Summary: IPU6 header files for HAL
Requires: %{name} = %{version}-%{release}
Requires: ipu6-camera-bins-devel
Group: Development/Languages/C and C++
%description devel
This provides the necessary header files for IPU6 HAL development.
%prep
%autosetup -p1 -n %{name}-%{commit}
%if 0%{?suse_version} > 1500
sed -i 's@-D_FORTIFY_SOURCE=2 @@' CMakeLists.txt
sed -i '/-D_FORTIFY_SOURCE=2/d' CMakeLists.txt
sed -i 's@-D_FORTIFY_SOURCE=2 @@' src/hal/hal_adaptor/CMakeLists.txt
sed -i '/-D_FORTIFY_SOURCE=2/d' src/hal/hal_adaptor/CMakeLists.txt
%endif
sed -i 's@lib/@%{_lib}/@' CMakeLists.txt
%build
for i in ipu_tgl ipu_adl ipu_mtl ; do
case $i in
ipu_tgl) IPU_VERSION=ipu6 ;;
ipu_adl) IPU_VERSION=ipu6ep ;;
ipu_mtl) IPU_VERSION=ipu6epmtl ;;
esac
export PKG_CONFIG_PATH=%{_libdir}/$i/pkgconfig
mkdir $i && pushd $i
%cmake -DCMAKE_BUILD_TYPE=Release -DIPU_VER=$IPU_VERSION \
-DBUILD_CAMHAL_TESTS=OFF -DUSE_PG_LITE_PIPE=ON \
-DCMAKE_INSTALL_PREFIX=%{_prefix} -DUSE_HAL_ADAPTOR=ON ../..
%make_build
popd
done
pushd src/hal/hal_adaptor
sed -i 's@/usr/lib/@%{_libdir}/@' HalAdaptor.cpp
%cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} .
%make_build
popd
%install
for i in ipu_tgl ipu_adl ipu_mtl ; do
pushd $i/build
%make_install
popd
done
pushd src/hal/hal_adaptor/build
%make_install
sed -i 's@lib/@%{_lib}/@' %{buildroot}%{_libdir}/pkgconfig/libcamhal.pc
popd
# We don't want static libs
#rm %{buildroot}%{_libdir}/*/libcamhal.a
mv %{buildroot}%{_prefix}/etc %{buildroot}/
install -p -m 0644 -D %{SOURCE1} %{buildroot}%{_udevrulesdir}/60-intel-ipu6.rules
install -m 0644 data/72-intel-mipi-ipu6-camera.rules %{buildroot}%{_udevrulesdir}/72-intel-mipi-ipu6-camera.rules
install -m 0644 data/72-intel-mipi-ipu7-camera.rules %{buildroot}%{_udevrulesdir}/72-intel-mipi-ipu7-camera.rules
# v4l2-relayd configuration examples
install -p -D -m 0644 %{SOURCE2} %{buildroot}%{_datadir}/defaults/etc/ipu_adl/v4l2-relayd
install -p -D -m 0644 %{SOURCE3} %{buildroot}%{_datadir}/defaults/etc/ipu_tgl/v4l2-relayd
install -p -D -m 0644 %{SOURCE4} %{buildroot}%{_datadir}/defaults/etc/ipu_mtl/v4l2-relayd
# Make intel-ipu6-kmp use /dev/video7 leaving /dev/video0 for loopback
install -p -D -m 0644 %{SOURCE5} %{buildroot}%{_modprobedir}/intel_ipu6_isys.conf
%fdupes %{buildroot}%{_datadir}/defaults/etc
%post
# skip triggering if udevd isn't even accessible, e.g. containers or
# rpm-ostree-based systems
if [ -S /run/udev/control ]; then
/usr/bin/udevadm control --reload
/usr/bin/udevadm trigger /sys/devices/pci0000:00/0000:00:05.0
fi
%files
%license LICENSE
%{_libdir}/libcamhal.so.*
%{_libdir}/libcamhal
%dir %{_datadir}/defaults
%dir %{_datadir}/defaults/etc
%{_datadir}/defaults/etc/*
%{_modprobedir}/intel_ipu6_isys.conf
%{_udevrulesdir}/*.rules
%{_sysconfdir}/camera
%files devel
%{_libdir}/libcamhal.so
%{_includedir}/libcamhal
%{_libdir}/pkgconfig/libcamhal.pc
%changelog