Making a port - debugging cmake check_include_file

Matthew D. Fuller fullermd at
Sun Apr 24 07:13:54 UTC 2016

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:

    pkg_check_modules(LIBV4L1 libv4l1)

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

        foreach(dir ${EXTRA_INCDIRS})

relatively early into the CMakeLists.txt and then add $LOCALBASE into
the cmake command with something like


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.

Matthew Fuller     (MF4839)   |  fullermd at
Systems/Network Administrator |
           On the Internet, nobody can hear you scream.

More information about the freebsd-ports mailing list