Долго не мог понять, почему кросс-компиляция пакета, который зависит от libpcap приводит к тому, что включаются заголовочные файлы из хоста (/usr/include вместо локальных для кросс-компиляции).
Нашёл, что откуда-то появляется "-I/usr/include" в CXXFLAGS.
Методом проб и ошибок дошёл до виновника: оказалось, что чтобы определить зависимость от pcap в моём скрипте CMake вызывается pcap-config (у libpcap нет описания для pkgconfig, но есть вот этот конфигурационный скрипт: вообще, логично, что он написан на shell, для кросс-компиляции - самое оно), но в нём нет никакой пользы для кросс-компиляции, к сожалению. Например:
http://trac.aircrack-ng.org/ticket/1528 Действительно, даже собранный для кросс-компиляции этот скрипт выводит следующее:
> ./build_dir/target-mips_34kc_musl-1.1.15/libpcap-1.7.4/pcap-config --cflags
-I/usr/includeНет слов.
В результате, люди чего только не делают. Вот, как в OpenWRT адаптируют pppd/Makefile.linux для сборки с libpcap:
https://github.com/openwrt/openwrt/blob/master/package/network/services/ppp/patches/300-filter-pcap-includes-lib.patch Ещё, бродя по исходникам, наткнулся на феерический отступ, напоминающий закладку в коде, когда далеко-далеко за пределами 80-ой колонки что-нибудь вставляют (проскроллируйте вправо до конца):
https://github.com/openwrt/openwrt/blob/master/package/network/utils/tcpdump/patches/002-remove_static_libpcap_check.patchUPD: А, ну, это строки удаляются из автоконфигурного скрипта, он автоматически генерируется. Но, всё-равно, "сюрприз".
P.S.: Кстати, нашёл другие пакеты, у которых те же проблемы:
http://www.yoctoproject.org/docs/2.2/mega-manual/mega-manual.html23.6.4. Binary Configuration Scripts Disabled
Some of the core recipes that package binary configuration scripts now disable the scripts due to the scripts previously requiring error-prone path substitution. Software that links against these libraries using these scriptsshould use the much more robust pkg-config instead. The list of recipes changed in this version (and their configuration scripts) is as follows:
directfb (directfb-config)
freetype (freetype-config)
gpgme (gpgme-config)
libassuan (libassuan-config)
libcroco (croco-6.0-config)
libgcrypt (libgcrypt-config)
libgpg-error (gpg-error-config)
libksba (ksba-config)
libpcap (pcap-config)
libpcre (pcre-config)
libpng (libpng-config, libpng16-config)
libsdl (sdl-config)
libusb-compat (libusb-config)
libxml2 (xml2-config)
libxslt (xslt-config)
ncurses (ncurses-config)
neon (neon-config)
npth (npth-config)
pth (pth-config)
taglib (taglib-config)Additionally, support for pkg-config has been added to some recipes in the previous list in the rare cases where the upstream software package does not already provide it.