summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: cccaa44f3ddcf699a3216c8369d23fd737e68888 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Script generated with import_catkin_packages.py
# For more information: https://github.com/bchretien/arch-ros-stacks
pkgdesc="ROS - OpenCV 3.x. for melodic distro"

_pkgname="opencv"
pkgname='ros-melodic-opencv3'
pkgver='3.4.7'
_pkgver_patch=1
arch=('x86_64')
pkgrel=2
license=('BSD')
url='https://github.com/ros-gbp/opencv3-release'
url="http://opencv.org/"

ros_makedepends=()
makedepends=(
  'cmake'
  'ros-build-tools'
  ${ros_makedepends[@]}
  'eigen'
  'ffmpeg'
  'glew'
  'gtk3'
  'hdf5'
  'jasper'
  'lapacke'
  'libjpeg-turbo'
  'libpng'
  'libtiff'
  'libwebp'
  'mesa'
  'openblas'
  'protobuf'
  'python-setuptools'
  'python'
  'python-numpy'
  'v4l-utils'
  'vtk')

ros_depends=('ros-melodic-catkin')
depends=(
  ${ros_depends[@]}
  'ffmpeg'
  'gst-plugins-base'
  'intel-tbb'
  'jasper'
  'lapack'
  'libdc1394'
  'libgphoto2'
  'libjpeg-turbo'
  'libwebp'
  'openblas'
  'openexr'
  'protobuf'
  'python'
  'v4l-utils'
  'zlib')

source=(opencv-${pkgver}.tar.gz::https://github.com/opencv/opencv/archive/${pkgver}.tar.gz
        opencv_contrib-${pkgver}.tar.gz::https://github.com/opencv/opencv_contrib/archive/${pkgver}.tar.gz)
sha256sums=('ea743896a604a6ba1e1c1651ad42c97d0f90165debe9940811c7e0bdaa307526'
            '5e3ba5fbe0ff3ab7462d42c08501f8c15d3e46b0684aee281f735345e1353cb4')

_dir="opencv-${pkgver}"

build() {
  # Use ROS environment variables
  source /usr/share/ros-build-tools/clear-ros-env.sh
  [ -f /opt/ros/melodic/setup.bash ] && source /opt/ros/melodic/setup.bash

  # Create build directory
  [ -d ${srcdir}/build ] || mkdir ${srcdir}/build
  cd ${srcdir}/build

  # Fix Python2/Python3 conflicts
  /usr/share/ros-build-tools/fix-python-scripts.sh -v 3 ${srcdir}/${_dir}

  # Build project
  cmake ${srcdir}/${_dir} \
    -DCMAKE_BUILD_TYPE=Release \
    -DCATKIN_BUILD_BINARY_PACKAGE=ON \
    -DCMAKE_INSTALL_PREFIX=/opt/ros/melodic \
    -DPYTHON_EXECUTABLE=/usr/bin/python3 \
    -DPYTHON_INCLUDE_DIR=/usr/include/python3.7m \
    -DPYTHON_LIBRARY=/usr/lib/libpython3.7m.so \
    -DPYTHON_BASENAME=.cpython3.7m \
    -DSETUPTOOLS_DEB_LAYOUT=OFF \
    -DWITH_V4L=ON \
    -DWITH_LIBV4L=ON \
    -DWITH_FFMPEG=ON \
    -DOPENCV_EXTRA_MODULES_PATH=${srcdir}/opencv_contrib-${pkgver}/modules \
    -DWITH_OPENCL=ON \
    -DWITH_OPENGL=ON \
    -DWITH_TBB=ON \
    -DOpenGL_GL_PREFERENCE=GLVND \
    -DBUILD_WITH_DEBUG_INFO=OFF \
    -DBUILD_TESTS=OFF \
    -DBUILD_PERF_TESTS=OFF \
    -DBUILD_EXAMPLES=OFF \
    -DINSTALL_C_EXAMPLES=ON \
    -DINSTALL_PYTHON_EXAMPLES=ON \
    -DCPU_BASELINE_DISABLE=SSE3 \
    -DCPU_BASELINE_REQUIRE=SSE2 \
    -DLAPACK_LIBRARIES="/usr/lib/liblapack.so;/usr/lib/libblas.so;/usr/lib/libcblas.so" \
    -DLAPACK_CBLAS_H="/usr/include/cblas.h" \
    -DLAPACK_LAPACKE_H="/usr/include/lapacke.h" \
    -DENABLE_PRECOMPILED_HEADERS=OFF

  ##########################################
  # Temporary workaround until compiler issue is fixed
  ##########################################
  # assume gcc compiler, fix issue:
  #    /usr/include/c++/9.2.0/cstdlib:75:15: fatal error: stdlib.h: No such file or directory

  CXX_VERSION=$(gcc --version | head -n1 | cut -f3 -d' ')
  echo "GCC vession found: ${CXX_VERSION}"
  # patch makefiles to insert gcc std include first all other includes
  grep -Rl CXX_INCLUDES "${srcdir}/build" | while read MAKE; do
    echo "patching ${MAKE}..."
    sed -i "s|CXX_INCLUDES = -I|CXX_INCLUDES = -isystem /usr/include/c++/${CXX_VERSION} -I|" "${MAKE}"
  done
  ##########################################

  # use all processors but be nice
  nice make -j$(nproc)
}

package() {
  cd "${srcdir}/build"
  make DESTDIR="${pkgdir}/" install
}