Brian Silverman | 4c7235a | 2021-11-17 19:04:37 -0800 | [diff] [blame^] | 1 | # We link in all the transitive dependencies to ensure bazel puts them all on |
| 2 | # the rpath so we can run tests on machines without all the dependencies |
| 3 | # installed on the system. |
| 4 | # |
| 5 | # Things we deliberately get from the host system or sysroot: |
| 6 | # * glibc: libc6, libm, librt, libdl, libpthread, libresolv |
| 7 | # * libstdc++ |
| 8 | # * libgcc_s (it's tied to glibc and libstdc++) |
| 9 | # * things that integrate tightly with glibc: libnsl, libtirpc, |
| 10 | # libgssapi_krb5, libkrb5, libk5crypto, libkrb5support |
| 11 | # * libssl (it has lots of conf files that need to match): libcrypto, libssl |
| 12 | # * libselinux (it needs to be compatible with the kernel) |
| 13 | # * libunwind (it's used by libstdc++) |
| 14 | # |
| 15 | # We want to keep our versions of opencv on all platforms exactly matching to |
| 16 | # minimize the maintenance burden. We use the same toolchain with similar rootfs |
| 17 | # on all of them, so if you find yourself tempted to make them different |
| 18 | # consider carefully whether the problem you're solving is really unique to that |
| 19 | # platform or will apply to all of them. |
| 20 | |
| 21 | _common_srcs_list = [ |
| 22 | "usr/lib/%s/libopencv_core.so.4.5", |
| 23 | "usr/lib/%s/libopencv_features2d.so.4.5", |
| 24 | "usr/lib/%s/libopencv_imgproc.so.4.5", |
| 25 | "usr/lib/%s/libopencv_flann.so.4.5", |
| 26 | "usr/lib/%s/libopencv_highgui.so.4.5", |
| 27 | "usr/lib/%s/libopencv_videoio.so.4.5", |
| 28 | "usr/lib/%s/libopencv_aruco.so.4.5", |
| 29 | "usr/lib/%s/libopencv_imgcodecs.so.4.5", |
| 30 | "usr/lib/%s/libopencv_ml.so.4.5", |
| 31 | "usr/lib/%s/libopencv_calib3d.so.4.5", |
| 32 | "usr/lib/%s/libtbb.so.2", |
| 33 | "usr/lib/%s/libgtk-3.so.0", |
| 34 | "usr/lib/%s/libgdk-3.so.0", |
| 35 | "usr/lib/%s/libpangocairo-1.0.so.0", |
| 36 | "usr/lib/%s/libpango-1.0.so.0", |
| 37 | "usr/lib/%s/libatk-1.0.so.0", |
| 38 | "usr/lib/%s/libgdcmDICT.so.3.0", |
| 39 | "usr/lib/%s/libgdcmCommon.so.3.0", |
| 40 | "usr/lib/%s/libgdcmIOD.so.3.0", |
| 41 | "usr/lib/%s/libgdcmMSFF.so.3.0", |
| 42 | "usr/lib/%s/libavutil.so.56", |
| 43 | "usr/lib/%s/libswscale.so.5", |
| 44 | "usr/lib/%s/libcairo-gobject.so.2", |
| 45 | "usr/lib/%s/libcairo.so.2", |
| 46 | "usr/lib/%s/libgdk_pixbuf-2.0.so.0", |
| 47 | "usr/lib/%s/libgio-2.0.so.0", |
| 48 | "usr/lib/%s/libgobject-2.0.so.0", |
| 49 | "usr/lib/%s/libglib-2.0.so.0", |
| 50 | "usr/lib/%s/libgthread-2.0.so.0", |
| 51 | "usr/lib/%s/libdc1394.so.25", |
| 52 | "usr/lib/%s/libgphoto2.so.6", |
| 53 | "usr/lib/%s/libgphoto2_port.so.12", |
| 54 | "usr/lib/%s/libavcodec.so.58", |
| 55 | "usr/lib/%s/libavformat.so.58", |
| 56 | "usr/lib/%s/libjpeg.so.62", |
| 57 | "usr/lib/%s/libwebp.so.6", |
| 58 | "usr/lib/%s/libpng16.so.16", |
| 59 | "usr/lib/%s/libtiff.so.5", |
| 60 | "usr/lib/%s/libImath-2_5.so.25", |
| 61 | "usr/lib/%s/libIlmImf-2_5.so.25", |
| 62 | "usr/lib/%s/libIex-2_5.so.25", |
| 63 | "usr/lib/%s/libHalf-2_5.so.25", |
| 64 | "usr/lib/%s/libIlmThread-2_5.so.25", |
| 65 | "usr/lib/libgdal.so.28", |
| 66 | "usr/lib/%s/libgdcmDSED.so.3.0", |
| 67 | "usr/lib/%s/libgmodule-2.0.so.0", |
| 68 | "usr/lib/%s/libX11.so.6", |
| 69 | "usr/lib/%s/libXi.so.6", |
| 70 | "usr/lib/%s/libXcomposite.so.1", |
| 71 | "usr/lib/%s/libXdamage.so.1", |
| 72 | "usr/lib/%s/libXfixes.so.3", |
| 73 | "usr/lib/%s/libatk-bridge-2.0.so.0", |
| 74 | "usr/lib/%s/libxkbcommon.so.0", |
| 75 | "usr/lib/%s/libwayland-cursor.so.0", |
| 76 | "usr/lib/%s/libwayland-egl.so.1", |
| 77 | "usr/lib/%s/libwayland-client.so.0", |
| 78 | "usr/lib/%s/libepoxy.so.0", |
| 79 | "usr/lib/%s/libharfbuzz.so.0", |
| 80 | "usr/lib/%s/libpangoft2-1.0.so.0", |
| 81 | "usr/lib/%s/libfontconfig.so.1", |
| 82 | "usr/lib/%s/libfreetype.so.6", |
| 83 | "usr/lib/%s/libXinerama.so.1", |
| 84 | "usr/lib/%s/libXrandr.so.2", |
| 85 | "usr/lib/%s/libXcursor.so.1", |
| 86 | "usr/lib/%s/libXext.so.6", |
| 87 | "usr/lib/%s/libthai.so.0", |
| 88 | "usr/lib/%s/libfribidi.so.0", |
| 89 | "lib/%s/libexpat.so.1", |
| 90 | "usr/lib/%s/libgdcmjpeg8.so.3.0", |
| 91 | "usr/lib/%s/libgdcmjpeg12.so.3.0", |
| 92 | "usr/lib/%s/libgdcmjpeg16.so.3.0", |
| 93 | "usr/lib/%s/libopenjp2.so.7", |
| 94 | "usr/lib/%s/libCharLS.so.2", |
| 95 | "usr/lib/%s/libuuid.so.1", |
| 96 | "usr/lib/%s/libjson-c.so.5", |
| 97 | "usr/lib/%s/libva-drm.so.2", |
| 98 | "usr/lib/%s/libva.so.2", |
| 99 | "usr/lib/%s/libva-x11.so.2", |
| 100 | "usr/lib/%s/libvdpau.so.1", |
| 101 | "usr/lib/%s/libdrm.so.2", |
| 102 | "usr/lib/%s/libpixman-1.so.0", |
| 103 | "usr/lib/%s/libxcb-shm.so.0", |
| 104 | "usr/lib/%s/libxcb.so.1", |
| 105 | "usr/lib/%s/libxcb-render.so.0", |
| 106 | "usr/lib/%s/libXrender.so.1", |
| 107 | "usr/lib/%s/libffi.so.7", |
| 108 | "usr/lib/%s/libraw1394.so.11", |
| 109 | "usr/lib/%s/libusb-1.0.so.0", |
| 110 | "usr/lib/%s/libltdl.so.7", |
| 111 | "usr/lib/%s/libexif.so.12", |
| 112 | "usr/lib/%s/libswresample.so.3", |
| 113 | "usr/lib/%s/libvpx.so.6", |
| 114 | "usr/lib/%s/libwebpmux.so.3", |
| 115 | "usr/lib/%s/librsvg-2.so.2", |
| 116 | "usr/lib/%s/libzvbi.so.0", |
| 117 | "usr/lib/%s/libsnappy.so.1", |
| 118 | "usr/lib/%s/libaom.so.0", |
| 119 | "usr/lib/%s/libcodec2.so.0.9", |
| 120 | "usr/lib/%s/libgsm.so.1", |
| 121 | "usr/lib/%s/libmp3lame.so.0", |
| 122 | "usr/lib/%s/libopus.so.0", |
| 123 | "usr/lib/%s/libshine.so.3", |
| 124 | "usr/lib/%s/libspeex.so.1", |
| 125 | "usr/lib/%s/libtheoraenc.so.1", |
| 126 | "usr/lib/%s/libtheoradec.so.1", |
| 127 | "usr/lib/%s/libtwolame.so.0", |
| 128 | "usr/lib/%s/libvorbis.so.0", |
| 129 | "usr/lib/%s/libvorbisenc.so.2", |
| 130 | "usr/lib/%s/libwavpack.so.1", |
| 131 | "usr/lib/%s/libx264.so.160", |
| 132 | "usr/lib/%s/libx265.so.192", |
| 133 | "usr/lib/%s/libxvidcore.so.4", |
| 134 | "usr/lib/%s/libxml2.so.2", |
| 135 | "usr/lib/%s/libgme.so.0", |
| 136 | "usr/lib/%s/libopenmpt.so.0", |
| 137 | "usr/lib/%s/libchromaprint.so.1", |
| 138 | "usr/lib/%s/libbluray.so.2", |
| 139 | "usr/lib/%s/libgnutls.so.30", |
| 140 | "usr/lib/%s/libssh-gcrypt.so.4", |
| 141 | "usr/lib/%s/libzstd.so.1", |
| 142 | "usr/lib/%s/libjbig.so.0", |
| 143 | "usr/lib/libarmadillo.so.10", |
| 144 | "usr/lib/%s/libproj.so.19", |
| 145 | "usr/lib/%s/libpoppler.so.102", |
| 146 | "usr/lib/%s/libfreexl.so.1", |
| 147 | "usr/lib/%s/libqhull.so.8.0", |
| 148 | "usr/lib/%s/libgeos_c.so.1", |
| 149 | "usr/lib/%s/libepsilon.so.1", |
| 150 | "usr/lib/%s/libodbc.so.2", |
| 151 | "usr/lib/%s/libodbcinst.so.2", |
| 152 | "usr/lib/%s/libkmlbase.so.1", |
| 153 | "usr/lib/%s/libkmldom.so.1", |
| 154 | "usr/lib/%s/libkmlengine.so.1", |
| 155 | "usr/lib/%s/libxerces-c-3.2.so", |
| 156 | "usr/lib/%s/libnetcdf.so.18", |
| 157 | "usr/lib/%s/libhdf5_serial_hl.so.100", |
| 158 | "usr/lib/%s/libsz.so.2", |
| 159 | "usr/lib/%s/libhdf5_serial.so.103", |
| 160 | "usr/lib/libmfhdfalt.so.0", |
| 161 | "usr/lib/libdfalt.so.0", |
| 162 | "usr/lib/libogdi.so.4.1", |
| 163 | "usr/lib/%s/libgif.so.7", |
| 164 | "usr/lib/%s/libgeotiff.so.5", |
| 165 | "usr/lib/%s/libpq.so.5", |
| 166 | "usr/lib/%s/libdapclient.so.6", |
| 167 | "usr/lib/%s/libdap.so.27", |
| 168 | "usr/lib/%s/libspatialite.so.7", |
| 169 | "usr/lib/%s/libcurl-gnutls.so.4", |
| 170 | "usr/lib/%s/libfyba.so.0", |
| 171 | "usr/lib/%s/libfygm.so.0", |
| 172 | "usr/lib/%s/libfyut.so.0", |
| 173 | "usr/lib/%s/libmariadb.so.3", |
| 174 | "lib/%s/libdbus-1.so.3", |
| 175 | "usr/lib/%s/libatspi.so.0", |
| 176 | "usr/lib/%s/libgraphite2.so.3", |
| 177 | "usr/lib/%s/libdatrie.so.1", |
| 178 | "usr/lib/%s/libXau.so.6", |
| 179 | "usr/lib/%s/libXdmcp.so.6", |
| 180 | "usr/lib/%s/libblkid.so.1", |
| 181 | "usr/lib/%s/libsoxr.so.0", |
| 182 | "usr/lib/%s/libogg.so.0", |
| 183 | "usr/lib/%s/libicui18n.so.67", |
| 184 | "usr/lib/%s/libicuuc.so.67", |
| 185 | "usr/lib/%s/libicudata.so.67", |
| 186 | "usr/lib/%s/libmpg123.so.0", |
| 187 | "usr/lib/%s/libvorbisfile.so.3", |
| 188 | "usr/lib/%s/libp11-kit.so.0", |
| 189 | "usr/lib/%s/libidn2.so.0", |
| 190 | "usr/lib/%s/libunistring.so.2", |
| 191 | "usr/lib/%s/libtasn1.so.6", |
| 192 | "usr/lib/%s/libnettle.so.8", |
| 193 | "usr/lib/%s/libhogweed.so.6", |
| 194 | "usr/lib/%s/libgmp.so.10", |
| 195 | "usr/lib/%s/libgcrypt.so.20", |
| 196 | "usr/lib/%s/blas/libblas.so.3", |
| 197 | "usr/lib/%s/lapack/liblapack.so.3", |
| 198 | "usr/lib/%s/libarpack.so.2", |
| 199 | "usr/lib/%s/libsuperlu.so.5", |
| 200 | "usr/lib/%s/libnss3.so", |
| 201 | "usr/lib/%s/libsmime3.so", |
| 202 | "usr/lib/%s/libnspr4.so", |
| 203 | "usr/lib/%s/liblcms2.so.2", |
| 204 | "usr/lib/%s/libgeos-3.9.0.so", |
| 205 | "usr/lib/%s/libminizip.so.1", |
| 206 | "usr/lib/%s/liburiparser.so.1", |
| 207 | "usr/lib/%s/libaec.so.0", |
| 208 | "usr/lib/%s/libssl3.so", |
| 209 | "usr/lib/%s/libldap_r-2.4.so.2", |
| 210 | "usr/lib/%s/libsqlite3.so.0", |
| 211 | "usr/lib/%s/libnghttp2.so.14", |
| 212 | "usr/lib/%s/librtmp.so.1", |
| 213 | "usr/lib/%s/libssh2.so.1", |
| 214 | "usr/lib/%s/libpsl.so.5", |
| 215 | "usr/lib/%s/liblber-2.4.so.2", |
| 216 | "usr/lib/%s/libsystemd.so.0", |
| 217 | "usr/lib/%s/libbsd.so.0", |
| 218 | "lib/%s/libgpg-error.so.0", |
| 219 | "usr/lib/%s/libgfortran.so.5", |
| 220 | "usr/lib/%s/libnssutil3.so", |
| 221 | "usr/lib/%s/libplc4.so", |
| 222 | "usr/lib/%s/libplds4.so", |
| 223 | "usr/lib/%s/libsasl2.so.2", |
| 224 | "usr/lib/%s/liblz4.so.1", |
| 225 | "lib/%s/libpcre.so.3", |
| 226 | "usr/lib/%s/libgomp.so.1", |
| 227 | "usr/lib/%s/libcharls.so.2", |
| 228 | "usr/lib/%s/libcfitsio.so.9", |
| 229 | "usr/lib/%s/librttopo.so.1", |
| 230 | "usr/lib/%s/libgstbase-1.0.so.0", |
| 231 | "usr/lib/%s/libgstreamer-1.0.so.0", |
| 232 | "usr/lib/%s/libgstapp-1.0.so.0", |
| 233 | "usr/lib/%s/libgstriff-1.0.so.0", |
| 234 | "usr/lib/%s/libgstpbutils-1.0.so.0", |
| 235 | "usr/lib/%s/libOpenCL.so.1", |
| 236 | "usr/lib/%s/libmount.so.1", |
| 237 | "usr/lib/%s/libdav1d.so.4", |
| 238 | "usr/lib/%s/librabbitmq.so.4", |
| 239 | "usr/lib/%s/libdeflate.so.0", |
| 240 | "usr/lib/%s/libheif.so.1", |
| 241 | "usr/lib/%s/libbrotlidec.so.1", |
| 242 | "usr/lib/%s/libzmq.so.5", |
| 243 | "usr/lib/%s/libsrt-gnutls.so.1.4", |
| 244 | "usr/lib/%s/libudev.so.1", |
| 245 | "usr/lib/%s/libudfread.so.0", |
| 246 | "usr/lib/%s/libmd.so.0", |
| 247 | "usr/lib/%s/libdw.so.1", |
| 248 | "usr/lib/%s/libgstaudio-1.0.so.0", |
| 249 | "usr/lib/%s/libgsttag-1.0.so.0", |
| 250 | "usr/lib/%s/libgstvideo-1.0.so.0", |
| 251 | "usr/lib/%s/libde265.so.0", |
| 252 | "usr/lib/%s/libbrotlicommon.so.1", |
| 253 | "usr/lib/%s/libsodium.so.23", |
| 254 | "usr/lib/%s/libpgm-5.3.so.0", |
| 255 | "usr/lib/%s/libnorm.so.1", |
| 256 | "usr/lib/%s/libelf.so.1", |
| 257 | "usr/lib/%s/liborc-0.4.so.0", |
| 258 | ] |
Brian Silverman | d4260c7 | 2020-01-14 00:08:02 -0800 | [diff] [blame] | 259 | |
| 260 | cc_library( |
| 261 | name = "opencv", |
Brian Silverman | 4c7235a | 2021-11-17 19:04:37 -0800 | [diff] [blame^] | 262 | srcs = select({ |
| 263 | "@platforms//cpu:x86_64": [s % "x86_64-linux-gnu" if "%" in s else s for s in _common_srcs_list] + [ |
| 264 | "usr/lib/x86_64-linux-gnu/libmfx.so.1", |
Austin Schuh | 5e7bbd7 | 2020-11-04 21:43:21 -0800 | [diff] [blame] | 265 | "usr/lib/x86_64-linux-gnu/libquadmath.so.0", |
Brian Silverman | 4c7235a | 2021-11-17 19:04:37 -0800 | [diff] [blame^] | 266 | "usr/lib/x86_64-linux-gnu/libnuma.so.1", |
Brian Silverman | d4260c7 | 2020-01-14 00:08:02 -0800 | [diff] [blame] | 267 | ], |
Brian Silverman | 4c7235a | 2021-11-17 19:04:37 -0800 | [diff] [blame^] | 268 | "@platforms//cpu:armv7": [s % "arm-linux-gnueabihf" if "%" in s else s for s in _common_srcs_list], |
Brian Silverman | d4260c7 | 2020-01-14 00:08:02 -0800 | [diff] [blame] | 269 | }), |
| 270 | hdrs = glob([ |
Brian Silverman | 4c7235a | 2021-11-17 19:04:37 -0800 | [diff] [blame^] | 271 | "usr/include/opencv4/**", |
Brian Silverman | d4260c7 | 2020-01-14 00:08:02 -0800 | [diff] [blame] | 272 | ]), |
| 273 | includes = [ |
| 274 | "usr/include", |
Brian Silverman | 4c7235a | 2021-11-17 19:04:37 -0800 | [diff] [blame^] | 275 | "usr/include/opencv4", |
Brian Silverman | d4260c7 | 2020-01-14 00:08:02 -0800 | [diff] [blame] | 276 | ], |
| 277 | linkopts = [ |
| 278 | "-ldl", |
Brian Silverman | d4260c7 | 2020-01-14 00:08:02 -0800 | [diff] [blame] | 279 | "-lresolv", |
| 280 | ], |
Brian Silverman | 4c7235a | 2021-11-17 19:04:37 -0800 | [diff] [blame^] | 281 | target_compatible_with = select({ |
| 282 | "@platforms//cpu:x86_64": [ |
| 283 | "@platforms//os:linux", |
| 284 | ], |
| 285 | "@platforms//cpu:armv7": [ |
| 286 | "@platforms//os:linux", |
| 287 | ], |
| 288 | }), |
Brian Silverman | d4260c7 | 2020-01-14 00:08:02 -0800 | [diff] [blame] | 289 | visibility = ["//visibility:public"], |
| 290 | ) |