diff --git a/platforms/android/android.toolchain.cmake b/platforms/android/android.toolchain.cmake index 4ac7102258..e566301d81 100644 --- a/platforms/android/android.toolchain.cmake +++ b/platforms/android/android.toolchain.cmake @@ -1596,16 +1596,49 @@ set( CMAKE_FIND_ROOT_PATH "${CMAKE_INSTALL_PREFIX}/share" ) # only search for libraries and includes in the ndk toolchain -set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) -set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) -set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) +if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) + set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) +endif() +if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) + set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) +endif() + +if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) + set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) +endif() + +if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) + set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) +endif() + +macro(__cmake_find_root_save_and_reset) + foreach(v + CMAKE_FIND_ROOT_PATH_MODE_LIBRARY + CMAKE_FIND_ROOT_PATH_MODE_INCLUDE + CMAKE_FIND_ROOT_PATH_MODE_PACKAGE + CMAKE_FIND_ROOT_PATH_MODE_PROGRAM + ) + set(__save_${v} ${${v}}) + set(${v} NEVER) + endforeach() +endmacro() + +macro(__cmake_find_root_restore) + foreach(v + CMAKE_FIND_ROOT_PATH_MODE_LIBRARY + CMAKE_FIND_ROOT_PATH_MODE_INCLUDE + CMAKE_FIND_ROOT_PATH_MODE_PACKAGE + CMAKE_FIND_ROOT_PATH_MODE_PROGRAM + ) + set(${v} ${__save_${v}}) + unset(__save_${v}) + endforeach() +endmacro() # macro to find packages on the host OS macro( find_host_package ) - set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) - set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER ) - set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER ) + __cmake_find_root_save_and_reset() if( CMAKE_HOST_WIN32 ) SET( WIN32 1 ) SET( UNIX ) @@ -1617,17 +1650,13 @@ macro( find_host_package ) SET( WIN32 ) SET( APPLE ) SET( UNIX 1 ) - set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) - set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) - set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) + __cmake_find_root_restore() endmacro() # macro to find programs on the host OS macro( find_host_program ) - set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) - set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER ) - set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER ) + __cmake_find_root_save_and_reset() if( CMAKE_HOST_WIN32 ) SET( WIN32 1 ) SET( UNIX ) @@ -1639,9 +1668,7 @@ macro( find_host_program ) SET( WIN32 ) SET( APPLE ) SET( UNIX 1 ) - set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) - set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) - set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) + __cmake_find_root_restore() endmacro()