Commit d11c48e0 authored by Brad King's avatar Brad King

Merge branch 'android-system-include-last' into release-3.9

parents 25b72e90 4bafa392
......@@ -168,6 +168,5 @@ macro(__android_compiler_common lang)
else()
list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES "${CMAKE_SYSROOT}/usr/include")
endif()
list(REMOVE_ITEM CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include")
endif()
endmacro()
......@@ -2633,18 +2633,6 @@ std::vector<std::string> cmGeneratorTarget::GetIncludeDirectories(
cmDeleteAll(linkInterfaceIncludeDirectoriesEntries);
// Add standard include directories for this language.
std::string const standardIncludesVar =
"CMAKE_" + lang + "_STANDARD_INCLUDE_DIRECTORIES";
std::string const standardIncludes =
this->Makefile->GetSafeDefinition(standardIncludesVar);
std::vector<std::string>::size_type const before = includes.size();
cmSystemTools::ExpandListArgument(standardIncludes, includes);
for (std::vector<std::string>::iterator i = includes.begin() + before;
i != includes.end(); ++i) {
cmSystemTools::ConvertToUnixSlashes(*i);
}
return includes;
}
......
......@@ -916,6 +916,20 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs,
}
}
// Add standard include directories for this language.
// We do not filter out implicit directories here.
std::string const standardIncludesVar =
"CMAKE_" + lang + "_STANDARD_INCLUDE_DIRECTORIES";
std::string const standardIncludes =
this->Makefile->GetSafeDefinition(standardIncludesVar);
std::vector<std::string>::size_type const before = includes.size();
cmSystemTools::ExpandListArgument(standardIncludes, includes);
for (std::vector<std::string>::iterator i = includes.begin() + before;
i != includes.end(); ++i) {
cmSystemTools::ConvertToUnixSlashes(*i);
dirs.push_back(*i);
}
for (std::vector<std::string>::const_iterator i = implicitDirs.begin();
i != implicitDirs.end(); ++i) {
if (std::find(includes.begin(), includes.end(), *i) != includes.end()) {
......
#include <dlfcn.h>
#ifndef NOT_SYSTEM_DLFCN_HEADER
#error "sysroot /usr/include appears too early"
#endif
#include "android.c"
#include <dlfcn.h>
#ifndef NOT_SYSTEM_DLFCN_HEADER
#error "sysroot /usr/include appears too early"
#endif
#include "android.cxx"
......@@ -92,3 +92,19 @@ if(CMAKE_ANDROID_ARCH_ABI STREQUAL "armeabi-v7a")
endif()
add_executable(android_c android.c)
add_executable(android_cxx android.cxx)
# Test that an explicit /usr/include is ignored in favor of
# appearing as a standard include directory at the end.
set(sysinc_dirs)
if(CMAKE_ANDROID_NDK)
if(NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
list(APPEND sysinc_dirs ${CMAKE_SYSROOT_COMPILE}/usr/include)
else()
list(APPEND sysinc_dirs ${CMAKE_SYSROOT}/usr/include)
endif()
endif()
list(APPEND sysinc_dirs ${CMAKE_CURRENT_SOURCE_DIR}/sysinc)
add_executable(android_sysinc_c android_sysinc.c)
target_include_directories(android_sysinc_c SYSTEM PRIVATE ${sysinc_dirs})
add_executable(android_sysinc_cxx android_sysinc.cxx)
target_include_directories(android_sysinc_cxx SYSTEM PRIVATE ${sysinc_dirs})
#define NOT_SYSTEM_DLFCN_HEADER
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment