• Brad King's avatar
    Android: Always add standard include directories last · 4bafa392
    Brad King authored
    The logic added in commit v3.6.0-rc1~30^2 (Add a variable to specify
    language-wide system include directories, 2016-05-24) to use
    `CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES` incorrectly filters them by
    `CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES`.  Rather than recognizing
    this, commit v3.8.0-rc1~60^2 (Android: Pass sysroot include directory
    explicitly, 2017-01-20) worked around the problem by incorrectly
    removing `/usr/include` from `CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES`
    so it worked in `CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES`.
    
    By not filtering out `/usr/include` from user-specified include
    directories, we allow the code
    
        include_directories(${CMAKE_SYSROOT}/usr/include)
    
    to place the include directory too early on the command line.
    
    Fix support for standard include directories to not be filtered by
    implicit include directories, and do not remove `/usr/include` from the
    list of implicit include directories for Android builds.  Add a test
    case to verify that an explicit `/usr/include` is ignored in favor
    of the standard directory at the end.
    
    Fixes: #17059
    4bafa392
cmGeneratorTarget.cxx 183 KB