Solved Cannot build 18a3 due to missing: FSTRCMP_LIBRARY FSTRCMP_INCLUDE_DIR
#1
I am trying to build alpha3 specifying a local tarball for fstrcmp, but I must be specifying the syntax incorrectly because cmake cannot find it:
Code:
...
-- FFmpeg 4.0 not found, falling back to internal build
-- Found Fmt: /build/kodi-pre-release/src/kodi-build/build/lib/libfmt.a (found version "3.0.1") 
-- Found FreeType: /usr/lib/libfreetype.so (found version "22.1.16") 
-- Found FriBidi: /usr/lib/libfribidi.so (found version "1.0.5") 
CMake Error at /usr/share/cmake-3.11/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find fstrcmp (missing: FSTRCMP_LIBRARY FSTRCMP_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/share/cmake-3.11/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  cmake/modules/Findfstrcmp.cmake:63 (find_package_handle_standard_args)
  cmake/scripts/common/Macros.cmake:374 (find_package)
  cmake/scripts/common/Macros.cmake:388 (find_package_with_ver)
  CMakeLists.txt:174 (core_require_dep)


-- Configuring incomplete, errors occurred!
See also "/build/kodi-pre-release/src/kodi-build/CMakeFiles/CMakeOutput.log".
See also "/build/kodi-pre-release/src/kodi-build/CMakeFiles/CMakeError.log".

Link to CMakeError.log: https://gist.github.com/graysky2/91eeae0...0ac79887a8
Link to CMakeOutput.log: https://gist.github.com/graysky2/ab61287...ed030445ec

Like ffmpeg, fmt, crossguid, and the other components, I am pre-downloading the source tarballs and specifying it like this:
Code:
pkgbase=kodi-pre-release
pkgname=("kodi-${pkgbase#kodi-*}" "kodi-eventclients-${pkgbase#kodi-*}" "kodi-tools-texturepacker-${pkgbase#kodi-*}" "kodi-dev-${pkgbase#kodi-*}")
pkgver=18.0a3
_codename=Leia
_rtype=Alpha
_ffmpeg_version="4.0.2-$_codename-$_rtype"3
_libdvdcss_version="1.4.1-$_codename-$_rtype"-3
_libdvdnav_version="6.0.0-$_codename-$_rtype"-3
_libdvdread_version="6.0.0-$_codename-$_rtype"-3
_fmt_version="3.0.1"
_crossguid_version="8f399e8bd4"
_fstrcmp_version="0.7.D001"
source=(
  "${pkgbase%%-*}-$pkgver-$_codename.tar.gz::https://github.com/xbmc/xbmc/archive/$pkgver-$_codename.tar.gz"
  "ffmpeg-$_ffmpeg_version.tar.gz::https://github.com/xbmc/FFmpeg/archive/$_ffmpeg_version.tar.gz"
  "libdvdcss-$_libdvdcss_version.tar.gz::https://github.com/xbmc/libdvdcss/archive/$_libdvdcss_version.tar.gz"
  "libdvdnav-$_libdvdnav_version.tar.gz::https://github.com/xbmc/libdvdnav/archive/$_libdvdnav_version.tar.gz"
  "libdvdread-$_libdvdread_version.tar.gz::https://github.com/xbmc/libdvdread/archive/$_libdvdread_version.tar.gz"
  "http://mirrors.kodi.tv/build-deps/sources/fmt-$_fmt_version.tar.gz"
  "http://mirrors.kodi.tv/build-deps/sources/crossguid-$_crossguid_version.tar.gz"
  "http://mirrors.kodi.tv/build-deps/sources/fstrcmp-$_fstrcmp_version.tar.gz"
)
  cmake -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_INSTALL_LIBDIR=/usr/lib \
    -DENABLE_EVENTCLIENTS=ON \
    -Dlibdvdcss_URL="$srcdir/libdvdcss-$_libdvdcss_version.tar.gz" \
    -Dlibdvdnav_URL="$srcdir/libdvdnav-$_libdvdnav_version.tar.gz" \
    -Dlibdvdread_URL="$srcdir/libdvdread-$_libdvdread_version.tar.gz" \
    -DFFMPEG_URL="$srcdir/ffmpeg-$_ffmpeg_version.tar.gz" \
    -DFMT_URL="$srcdir/fmt-$_fmt_version.tar.gz" \
    -DCROSSGUID_URL="$srcdir/crossguid-$_crossguid_version.tar.gz" \
    -DFSTRCMP_URL="$srcdir/fstrcmp-$_fstrcmp_version.tar.gz" \
    -DENABLE_INTERNAL_FMT=ON \
    ../"xbmc-$pkgver-$_codename"
Need help programming a Streamzap remote?
Reply
#2
I stumbled over something similar lately as I couldn't compile Kodi on Ubuntu as well.

While using Ubuntu I had to install fstrcmp-devel as a build-dep. After that everything worked as expected.

See also:

https://github.com/xbmc/xbmc/commit/c79f...f4e57365e4
Reply
#3
I too verified that if I build fstrcmp and install it on the build machine, I am able to build a3, but my goal is to avoid introducing an extra build dep.  As well, for Arch Linux and Arch ARM, there is not an official package for fstrcmp.  Is there any possibility of using the sourcetarball method to accomplish this?
Need help programming a Streamzap remote?
Reply
#4
if you pass -DENABLE_INTERNAL_FSTRCMP=1 to cmake while configuring kodi it will download and build inline. unless you have network restrictions that should the easiest solution (barring cross compiling ickyness, can't guarantee how well it will work in that case, not tested).

it will use the URL you pass in there as well.
Reply
#5
You miss -DENABLE_INTERNAL_FSTRCMP=ON (like you have done for fmt), setting FSTRCMP_URL doesn't automatically enable the internal build. Have a look at https://github.com/xbmc/xbmc/blob/master...rcmp.cmake.
Reply
#6
@spiff @Rechi -  Yes, thank you both.  Adding the line works (built with network cable unplugged as a test of downloading externals).

https://aur.archlinux.org/cgit/aur.git/c...7093d3a106
Need help programming a Streamzap remote?
Reply

Logout Mark Read Team Forum Stats Members Help
Cannot build 18a3 due to missing: FSTRCMP_LIBRARY FSTRCMP_INCLUDE_DIR0