| # testNoSuchFile should only be found if the file absolute path is |
| # incorrectly prepended with the search path. |
| |
| function(strip_windows_path_prefix p outvar) |
| if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") |
| string(REGEX REPLACE "^.:" "" p "${p}") |
| endif() |
| set(${outvar} "${p}" PARENT_SCOPE) |
| endfunction() |
| |
| strip_windows_path_prefix("${CMAKE_CURRENT_SOURCE_DIR}" srcdir) |
| |
| configure_file(testCWD "tmp${srcdir}/testNoSuchFile" COPYONLY) |
| |
| find_program(PROG_ABS |
| NAMES "${srcdir}/testNoSuchFile" |
| PATHS "${CMAKE_CURRENT_BINARY_DIR}/tmp" |
| NO_DEFAULT_PATH |
| ) |
| message(STATUS "PROG_ABS='${PROG_ABS}'") |
| |
| find_program(PROG_ABS_NPD |
| NAMES "${srcdir}/testNoSuchFile" |
| PATHS "${CMAKE_CURRENT_BINARY_DIR}/tmp" |
| NAMES_PER_DIR |
| NO_DEFAULT_PATH |
| ) |
| message(STATUS "PROG_ABS_NPD='${PROG_ABS_NPD}'") |
| |
| # ./testCWD should not be found without '.' being in the path list. |
| |
| configure_file(testCWD testCWD COPYONLY) |
| |
| find_program(PROG_CWD |
| NAMES testCWD |
| NO_DEFAULT_PATH |
| ) |
| message(STATUS "PROG_CWD='${PROG_CWD}'") |
| |
| |
| set(CMAKE_PREFIX_PATH ".") |
| # On some platforms / dashboards the current working |
| # directory can be in PATH or other search locations |
| # so disable all searching to make sure this fails |
| set(CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH OFF) |
| set(CMAKE_FIND_USE_CMAKE_PATH OFF) |
| set(CMAKE_FIND_USE_CMAKE_SYSTEM_PATH OFF) |
| set(CMAKE_FIND_USE_PACKAGE_ROOT_PATH OFF) |
| set(CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH OFF) |
| find_program(PROG_CWD |
| NAMES testCWD |
| ) |
| message(STATUS "PROG_CWD='${PROG_CWD}'") |
| |
| set(CMAKE_PREFIX_PATH ".") |
| set(CMAKE_FIND_USE_CMAKE_PATH ON) |
| find_program(PROG_CWD |
| NAMES testCWD |
| ) |
| message(STATUS "PROG_CWD='${PROG_CWD}'") |
| |
| find_program(PROG_CWD_NPD |
| NAMES testCWD |
| NAMES_PER_DIR |
| NO_DEFAULT_PATH |
| ) |
| message(STATUS "PROG_CWD_NPD='${PROG_CWD_NPD}'") |
| |
| # Confirm that adding '.' to path does locate ./testCWD. |
| |
| find_program(PROG_CWD_DOT |
| NAMES testCWD |
| PATHS . |
| NO_DEFAULT_PATH |
| ) |
| message(STATUS "PROG_CWD_DOT='${PROG_CWD_DOT}'") |
| |
| find_program(PROG_CWD_DOT_NPD |
| NAMES testCWD |
| PATHS . |
| NAMES_PER_DIR |
| NO_DEFAULT_PATH |
| ) |
| message(STATUS "PROG_CWD_DOT_NPD='${PROG_CWD_DOT_NPD}'") |