diff --git a/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/portfile.cmake b/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/portfile.cmake new file mode 100644 index 00000000000000..7617e1d895f507 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/portfile.cmake @@ -0,0 +1,7 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +vcpkg_cmake_configure( + SOURCE_PATH "${CURRENT_PORT_DIR}/project" + DISABLE_PARALLEL_CONFIGURE # keep separate logs +) +vcpkg_cmake_build() diff --git a/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/project/CMakeLists.txt b/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/project/CMakeLists.txt new file mode 100644 index 00000000000000..21712835dfc64a --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/project/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 3.30) +project(cmake-toolchain-file-test C CXX) + +foreach(var IN ITEMS + CMAKE_SYSROOT + CMAKE_FIND_ROOT_PATH + CMAKE_PREFIX_PATH + CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES + CMAKE_SYSTEM_IGNORE_PATH + CMAKE_FIND_ROOT_PATH_MODE_LIBRARY +) + list(JOIN "${var}" "\n " dirs) + message("" "${var}:\n ${dirs}\n") +endforeach() + +set(CMAKE_FIND_DEBUG_MODE 1) +set(link_libs "") +set(implicit_link_libs "${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES}") +list(REMOVE_ITEM implicit_link_libs ${CMAKE_C_IMPLICIT_LINK_LIBRARIES}) +foreach(lib IN LISTS implicit_link_libs) + if(EXISTS "${lib}") + message("" "Absolute path: ${lib}\n") + else() + string(MAKE_C_IDENTIFIER "${lib}" id) + find_library(${id}_LIBRARY NAMES "${lib}" NO_CACHE) + if(NOT ${id}_LIBRARY) + find_library(${id}_LIBRARY NAMES "${lib}" PATHS ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES} NO_DEFAULT_PATH NO_CACHE) + endif() + list(APPEND link_libs "${${id}_LIBRARY}") + endif() +endforeach() + +# Pull link errors into config step set of log files +try_compile(link_libs_accepted + SOURCES "${CMAKE_CURRENT_LIST_DIR}/main.c" + LINK_LIBRARIES ${link_libs} + LOG_DESCRIPTION "Checking linking with ${link_libs}" + OUTPUT_VARIABLE output +) +if(NOT link_libs_accepted) + message(FATAL_ERROR "${output}") +endif() diff --git a/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/project/main.c b/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/project/main.c new file mode 100644 index 00000000000000..d0510dd0f6f0da --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/project/main.c @@ -0,0 +1,7 @@ +#include + +int main() +{ + printf("Hello %s\n", "world"); + return 0; +} diff --git a/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/vcpkg.json b/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/vcpkg.json new file mode 100644 index 00000000000000..0df0d542da175a --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-cmake-toolchain-file/vcpkg.json @@ -0,0 +1,13 @@ +{ + "name": "vcpkg-ci-cmake-toolchain-file", + "version-string": "ci", + "description": "Validate vcpkg.cmake toolchain file", + "homepage": "https://github.com/microsoft/vcpkg", + "license": "MIT", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + } + ] +} diff --git a/scripts/toolchains/android.cmake b/scripts/toolchains/android.cmake index d675d06a73fa07..3ec3391684c215 100644 --- a/scripts/toolchains/android.cmake +++ b/scripts/toolchains/android.cmake @@ -31,6 +31,11 @@ endif() include("${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake") +# find_library must ignore host libs +if(ANDROID_TOOLCHAIN_ROOT AND EXISTS "${ANDROID_TOOLCHAIN_ROOT}/lib") + list(APPEND CMAKE_SYSTEM_IGNORE_PATH "${ANDROID_TOOLCHAIN_ROOT}/lib") +endif() + if(NOT _VCPKG_ANDROID_TOOLCHAIN) set(_VCPKG_ANDROID_TOOLCHAIN 1)