Making a port - debugging cmake check_include_file

abi abi at abinet.ru
Sun Apr 24 08:44:36 UTC 2016


I go the first way, however it seems that include directory is ignored 
in include tests.
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.28")
-- Checking for module 'libv4l1'
--   Found libv4l1, version 1.6.3

gmake[3]: Entering directory 
'/usr/home/abishai/zoneminder/work/ZoneMinder-5a3978f/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_c7b01.dir/CheckIncludeFile.c.o
/usr/bin/cc    -O2 -pipe  -fstack-protector -fno-strict-aliasing -o 
CMakeFiles/cmTC_c7b01.dir/CheckIncludeFile.c.o   -c 
/usr/home/abishai/zoneminder/work/ZoneMinder-5a3978f/CMakeFiles/CMakeTmp/CheckIncludeFile.c
/usr/home/abishai/zoneminder/work/ZoneMinder-5a3978f/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:10: 
fatal error: 'libv4l1-videodev.h' file not found
#include <libv4l1-videodev.h>

No -I, like before.
Should I try CMAKE_REQUIRED_INCLUDES ? However, I don't know the effect 
of this on linux systems.


On 24.04.2016 10:13, Matthew D. Fuller wrote:
> On Sun, Apr 24, 2016 at 01:28:35AM +0300 I heard the voice of
> abi, and lo! it spake thus:
>> Thanks!
>> If speak about general purpose solution, acceptable by upstream, I should
>> 1. make cmake variable like INCLUDE_DIR_EXTRA
>> 2. if set, include it contents.
>> 3. add default value if platform is FreeBSD
>> Am I right?
> I'd say it depends on how much work you wanna put in, and how
> interested upstream is.
>
>
> The pkgconfig path is fairly simple.  In a quick test:
>
>      include(FindPkgConfig)
>      pkg_check_modules(LIBV4L1 libv4l1)
>      if(LIBV4L1_FOUND)
>          include_directories(${LIBV4L1_INCLUDE_DIRS})
>      endif()
>
> seems to set things right here (I assume from the libv4l1-videodev.h
> that it wants v4l_1_ rather than v4l_2_).  That may be trivially
> upstreamable, since it should just quietly have no effect in the cases
> where v4l isn't in pkgconf, and DTRT when it is.  Of course, it won't
> work if a system doesn't have pkg-config installed, so unless you
> wanted to add that as a build dep (it _is_ pretty tiny, but it's an
> extra dep), you couldn't assume it was there on the system.
>
>
> A somewhat more verbose solution that passes more control to the port
> level would be to patch in a block like
>
>      if(EXTRA_INCDIRS)
>          foreach(dir ${EXTRA_INCDIRS})
>              include_directories(${dir})
>          endforeach()
>      endif()
>
> relatively early into the CMakeLists.txt and then add $LOCALBASE into
> the cmake command with something like
>
>      CMAKE_ARGS+=-DEXTRA_INCDIRS="${LOCALBASE}"
>
> in the port Makefile (untested).  Aside from potential need to redo
> the patch if the CMakeLists.txt changes between releases, that doesn't
> really need any upstream involvement at all, it can just be carried in
> the port.  OTOH, it's probably not too objectionable (possibly with
> tweaks to variable naming) to upstream either.
>
>
>



More information about the freebsd-ports mailing list