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.




_______________________________________________
freebsd-ports@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to