Are `check_include_file` / `check_function_exists` adding erroneous/default include folders?
Hi,
I am cross compiling on an Linux Ubuntu with cmake 3.12.1 and targeting an Android. I need to use Conan for the project, but I think this part is ok.
I am wondering if CMake is not adding -I/usr/include
to the calls to the functions check_include_file
and check_function_exists
. Some relevant logs of the CMakeFiles/CMakeError.log
/ CmakeFiles/CMakeOutput.log
that make me believe that are pasted below (notice the path -I/usr/include
).
Also, when I run make VERBOSE=1
after those configuration steps, I see no /usr/include
in the emitted compiler command (see below). CMAKE_CXX_FLAGS
is equal to:
-fPIE -fPIC -I/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21/include/c++/4.8 -I/media
/raffi/linuxdata/programs/remote_install/android-toolchain-arm21/include/c++/4.8/arm-linux-androideabi/armv7-a/ -march=armv7-a -
mthumb -mfpu=vfpv3-d16 -mfloat-abi=softfp -funwind-tables -no-canonical-prefixes -stdlib=libc++
and those are properly passed to the source compilation.
Is there something I am doing wrong?
Thanks, Raffi
PS: Sorry for the long log lines.
make VERBOSE=1
cd /media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d19c5820d2155731c42140dcd53
7ed0/build/src && /media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21/bin/clang++ --target=armv7-none-linux-andr
oideabi --gcc-toolchain=/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21 --sysroot=/media/raffi/linuxdata/pro
grams/remote_install/android-toolchain-arm21/sysroot -DEXV_BUILDING_LIB -DEXV_COMMERCIAL_VERSION -DEXV_HAVE_DLL -I/media/raffi/lin
uxdata/tmp/conan_android_tests/.conan/data/Expat/2.2.4-1/pix4d/stable/package/eacfb8c60ef93e631c0b04bbb7845332b9da2c9c/include -I/m
edia/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d19c5820d2155731c42140dcd537ed0/
exiv2/src -I/media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d19c5820d2155731c4
2140dcd537ed0/exiv2/include -I/media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505
d19c5820d2155731c42140dcd537ed0/exiv2/include/exiv2 -I/media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4
d/stable/build/4854e1505d19c5820d2155731c42140dcd537ed0/build -I/media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.
25-12/pix4d/stable/build/4854e1505d19c5820d2155731c42140dcd537ed0/exiv2/xmpsdk/include -I/media/raffi/linuxdata/tmp/conan_android_t
ests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d19c5820d2155731c42140dcd537ed0/build/src -fPIE -fPIC -I/media/raffi/li
nuxdata/programs/remote_install/android-toolchain-arm21/include/c++/4.8 -I/media/raffi/linuxdata/programs/remote_install/android-to
olchain-arm21/include/c++/4.8/arm-linux-androideabi/armv7-a/ -march=armv7-a -mthumb -mfpu=vfpv3-d16 -mfloat-abi=softfp -funwind-
tables -no-canonical-prefixes -stdlib=libc++ -O3 -DNDEBUG -fPIC -o CMakeFiles/exiv2lib.dir/basicio.cpp.o -c /media/raffi/linux
data/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d19c5820d2155731c42140dcd537ed0/exiv2/src/basici
o.cpp
CMakeError.log: -I/usr/include
is added before the ${CMAKE_CXX_FLAGS}
on the command line:
Determining if the include file stdlib.h exists failed with the following output:
Change Dir: /media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d19c5820d2155731c4
2140dcd537ed0/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/make" "cmTC_963b5/fast"
/usr/bin/make -f CMakeFiles/cmTC_963b5.dir/build.make CMakeFiles/cmTC_963b5.dir/build
make[1]: Entering directory '/media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d
19c5820d2155731c42140dcd537ed0/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_963b5.dir/CheckIncludeFile.c.o
/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21/bin/clang --target=armv7-none-linux-androideabi --gcc-toolch
ain=/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21 --sysroot=/media/raffi/linuxdata/programs/remote_install
/android-toolchain-arm21/sysroot -I/usr/include -fPIE -fPIC -I/media/raffi/linuxdata/programs/remote_install/android-toolchain-ar
m21/include/c++/4.8 -I/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21/include/c++/4.8/arm-linux-androideabi/
armv7-a/ -march=armv7-a -mthumb -mfpu=vfpv3-d16 -mfloat-abi=softfp -funwind-tables -no-canonical-prefixes -g -fPIE -o CMake
Files/cmTC_963b5.dir/CheckIncludeFile.c.o -c /media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stabl
e/build/4854e1505d19c5820d2155731c42140dcd537ed0/build/CMakeFiles/CMakeTmp/CheckIncludeFile.c
In file included from /media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d19c5820
d2155731c42140dcd537ed0/build/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:
/usr/include/stdlib.h:25:10: fatal error: 'bits/libc-header-start.h' file not found
#include <bits/libc-header-start.h>
and CMakeOutput.log:
Determining if the function munmap exists passed with the following output:
Change Dir: /media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d19c5820d2155731c4
2140dcd537ed0/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/make" "cmTC_a8a0b/fast"
/usr/bin/make -f CMakeFiles/cmTC_a8a0b.dir/build.make CMakeFiles/cmTC_a8a0b.dir/build
make[1]: Entering directory '/media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d
19c5820d2155731c42140dcd537ed0/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_a8a0b.dir/CheckFunctionExists.c.o
/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21/bin/clang --target=armv7-none-linux-androideabi --gcc-toolch
ain=/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21 --sysroot=/media/raffi/linuxdata/programs/remote_install
/android-toolchain-arm21/sysroot -I/usr/include -fPIE -fPIC -I/media/raffi/linuxdata/programs/remote_install/android-toolchain-ar
m21/include/c++/4.8 -I/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21/include/c++/4.8/arm-linux-androideabi/
armv7-a/ -march=armv7-a -mthumb -mfpu=vfpv3-d16 -mfloat-abi=softfp -funwind-tables -no-canonical-prefixes -DCHECK_FUNCTION_EXI
STS=munmap -g -fPIE -o CMakeFiles/cmTC_a8a0b.dir/CheckFunctionExists.c.o -c /usr/local/cmake-3.12.2-Linux-x86_64/share/cmake-3.
12/Modules/CheckFunctionExists.c
Linking C executable cmTC_a8a0b
/usr/local/cmake-3.12.2-Linux-x86_64/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a8a0b.dir/link.txt --verbose=1
/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21/bin/clang --target=armv7-none-linux-androideabi --gcc-toolch
ain=/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21 --sysroot=/media/raffi/linuxdata/programs/remote_install
/android-toolchain-arm21/sysroot -fPIE -fPIC -I/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21/include/c++/4
.8 -I/media/raffi/linuxdata/programs/remote_install/android-toolchain-arm21/include/c++/4.8/arm-linux-androideabi/armv7-a/ -marc
h=armv7-a -mthumb -mfpu=vfpv3-d16 -mfloat-abi=softfp -funwind-tables -no-canonical-prefixes -DCHECK_FUNCTION_EXISTS=munmap -g -W
l,--fix-cortex-a8 -fPIE -pie -Wl,--gc-sections -Wl,-z,nocopyreloc -pie CMakeFiles/cmTC_a8a0b.dir/CheckFunctionExists.c.o -o cmTC
_a8a0b
make[1]: Leaving directory '/media/raffi/linuxdata/tmp/conan_android_tests/.conan/data/Exiv2/0.25-12/pix4d/stable/build/4854e1505d1
9c5820d2155731c42140dcd537ed0/build/CMakeFiles/CMakeTmp'