Date: Sun, 24 Apr 2016 11:44:31 +0300 From: abi <abi@abinet.ru> To: freebsd-ports@freebsd.org Subject: Re: Making a port - debugging cmake check_include_file Message-ID: <571C876F.3040000@abinet.ru> In-Reply-To: <20160424071351.GQ83618@over-yonder.net> References: <571BE034.9070200@abinet.ru> <20160423215530.GP83618@over-yonder.net> <571BF713.4040607@abinet.ru> <20160424071351.GQ83618@over-yonder.net>
next in thread | previous in thread | raw e-mail | index | archive | help
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. > > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?571C876F.3040000>