Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[vcpkg script] Add support for Android to make and meson #26570

Closed
wants to merge 12 commits into from
1 change: 1 addition & 0 deletions ports/vcpkg-cmake-get-vars/cmake_get_vars/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ list(APPEND VCPKG_DEFAULT_VARS_TO_CHECK CMAKE_CROSSCOMPILING
CMAKE_HOST_SYSTEM_NAME
CMAKE_SYSTEM_PROCESSOR
CMAKE_HOST_SYSTEM_PROCESSOR
CMAKE_CXX_COMPILER_TARGET
m-kuhn marked this conversation as resolved.
Show resolved Hide resolved
CMAKE_SIZEOF_VOID_P
MSVC
MSVC_VERSION)
Expand Down
3 changes: 1 addition & 2 deletions ports/vcpkg-cmake-get-vars/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"name": "vcpkg-cmake-get-vars",
"version-date": "2022-05-10",
"port-version": 1,
"version-date": "2022-08-28",
"documentation": "https://vcpkg.io/en/docs/README.html",
"license": "MIT",
"dependencies": [
Expand Down
19 changes: 19 additions & 0 deletions scripts/cmake/vcpkg_configure_make.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,11 @@ macro(z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags flag_suffix)
# just ignore them.
string(REGEX REPLACE "((-|/)RTC[^ ]+)" "-Xcompiler \\1" CFLAGS_${flag_suffix} "${CFLAGS_${flag_suffix}}")
string(REGEX REPLACE "((-|/)RTC[^ ]+)" "-Xcompiler \\1" CXXFLAGS_${flag_suffix} "${CXXFLAGS_${flag_suffix}}")
if (VCPKG_DETECTED_CMAKE_C_COMPILER_ID MATCHES Clang AND VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET)
string(APPEND CXXFLAGS_${flag_suffix} " --target=${VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET}")
string(APPEND CFLAGS_${flag_suffix} " --target=${VCPKG_DETECTED_CMAKE_C_COMPILER_TARGET}")
endif()

m-kuhn marked this conversation as resolved.
Show resolved Hide resolved
string(STRIP "${CPPFLAGS_${flag_suffix}}" CPPFLAGS_${flag_suffix})
string(STRIP "${CFLAGS_${flag_suffix}}" CFLAGS_${flag_suffix})
string(STRIP "${CXXFLAGS_${flag_suffix}}" CXXFLAGS_${flag_suffix})
Expand All @@ -115,6 +120,7 @@ macro(z_vcpkg_append_to_configure_environment inoutstring var defaultval)
else()
string(APPEND ${inoutstring} " ${var}='${defaultval}'")
endif()
debug_message(" ${var}='${defaultval}'")
endmacro()

macro(z_convert_to_list input output)
Expand Down Expand Up @@ -395,6 +401,7 @@ function(vcpkg_configure_make)
if(VCPKG_DETECTED_CMAKE_${cmakevar})
set(ENV{${envvar}} "${prog}")
endif()
debug_message("${envvar}=${prog}")
endfunction()
z_vcpkg_make_set_env(CC C_COMPILER)
if(NOT VCPKG_CROSSCOMPILING)
Expand Down Expand Up @@ -462,6 +469,14 @@ function(vcpkg_configure_make)
debug_message("Using make triplet: ${arg_BUILD_TRIPLET}")
endif()
endif()

# Android - cross-compiling support
if(VCPKG_TARGET_IS_ANDROID)
if (requires_autoconfig AND NOT arg_BUILD_TRIPLET OR arg_DETERMINE_BUILD_TRIPLET)
set(arg_BUILD_TRIPLET "--host=${VCPKG_MAKE_BUILD_TRIPLET}")
debug_message("Using make triplet: ${arg_BUILD_TRIPLET}")
endif()
endif()
m-kuhn marked this conversation as resolved.
Show resolved Hide resolved

# Cleanup previous build dirs
file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel"
Expand Down Expand Up @@ -698,6 +713,10 @@ function(vcpkg_configure_make)
string(PREPEND LDFLAGS_${var_suffix} "-Xlinker -Xlinker -Xlinker ")
endif()
endif()
if (VCPKG_DETECTED_CMAKE_C_COMPILER_ID MATCHES Clang AND VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET)
string(APPEND LDFLAGS_${var_suffix} " --target=${VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET}")
endif()
debug_message("LDFLAGS_${var_suffix}: ${LDFLAGS_${var_suffix}}")
endmacro()

if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug" AND NOT arg_NO_DEBUG)
Expand Down
9 changes: 9 additions & 0 deletions scripts/cmake/vcpkg_configure_meson.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -122,11 +122,17 @@ function(z_vcpkg_meson_generate_flags_properties_string out_var config_type)
set(libpath "${libpath_flag}${CURRENT_INSTALLED_DIR}${path_suffix}/lib")

z_vcpkg_meson_convert_compiler_flags_to_list(cflags "${VCPKG_DETECTED_CMAKE_C_FLAGS_${config_type}}")
if (VCPKG_TARGET_IS_ANDROID AND VCPKG_DETECTED_CMAKE_C_COMPILER_ID MATCHES Clang AND VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET)
list(APPEND cflags "--target=${VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET}")
endif()
vcpkg_list(APPEND cflags "-I${CURRENT_INSTALLED_DIR}/include")
z_vcpkg_meson_convert_list_to_python_array(cflags ${cflags})
string(APPEND result "c_args = ${cflags}\n")

z_vcpkg_meson_convert_compiler_flags_to_list(cxxflags "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${config_type}}")
if (VCPKG_TARGET_IS_ANDROID AND VCPKG_DETECTED_CMAKE_C_COMPILER_ID MATCHES Clang AND VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET)
list(APPEND cxxflags "--target=${VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET}")
endif()
vcpkg_list(APPEND cxxflags "-I${CURRENT_INSTALLED_DIR}/include")
z_vcpkg_meson_convert_list_to_python_array(cxxflags ${cxxflags})
string(APPEND result "cpp_args = ${cxxflags}\n")
Expand All @@ -149,6 +155,9 @@ function(z_vcpkg_meson_generate_flags_properties_string out_var config_type)
endif()
endif()
vcpkg_list(APPEND linker_flags "${libpath}")
if (VCPKG_TARGET_IS_ANDROID AND VCPKG_DETECTED_CMAKE_C_COMPILER_ID MATCHES Clang AND VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET)
list(APPEND linker_flags "--target=${VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET}")
endif()
z_vcpkg_meson_convert_list_to_python_array(linker_flags ${linker_flags})
string(APPEND result "c_link_args = ${linker_flags}\n")
string(APPEND result "cpp_link_args = ${linker_flags}\n")
Expand Down
2 changes: 2 additions & 0 deletions scripts/get_cmake_vars/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ list(APPEND VCPKG_DEFAULT_VARS_TO_CHECK CMAKE_CROSSCOMPILING
CMAKE_SYSTEM_NAME
CMAKE_HOST_SYSTEM_NAME
CMAKE_SYSTEM_PROCESSOR
CMAKE_CXX_COMPILER_TARGET
CMAKE_C_COMPILER_TARGET
CMAKE_HOST_SYSTEM_PROCESSOR)
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
list(APPEND VCPKG_DEFAULT_VARS_TO_CHECK CMAKE_OSX_DEPLOYMENT_TARGET
Expand Down
4 changes: 0 additions & 4 deletions scripts/toolchains/android.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,8 @@ if (VCPKG_TARGET_TRIPLET MATCHES "arm64-android")
elseif(VCPKG_TARGET_TRIPLET MATCHES "armv6-android")
set(ANDROID_ABI armeabi CACHE STRING "")
set(ANDROID_ARM_MODE arm CACHE STRING "")
elseif(VCPKG_TARGET_TRIPLET MATCHES "arm-neon-android")
set(ANDROID_ABI armeabi-v7a CACHE STRING "")
set(ANDROID_ARM_NEON ON CACHE BOOL "")
elseif(VCPKG_TARGET_TRIPLET MATCHES "arm-android")
set(ANDROID_ABI armeabi-v7a CACHE STRING "")
set(ANDROID_ARM_NEON OFF CACHE BOOL "")
elseif(VCPKG_TARGET_TRIPLET MATCHES "x64-android")
set(ANDROID_ABI x86_64 CACHE STRING "")
elseif(VCPKG_TARGET_TRIPLET MATCHES "x86-android")
Expand Down
1 change: 1 addition & 0 deletions triplets/community/arm-android.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ set(VCPKG_TARGET_ARCHITECTURE arm)
set(VCPKG_CRT_LINKAGE static)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CMAKE_SYSTEM_NAME Android)
set(VCPKG_MAKE_BUILD_TRIPLET armv7a-linux-androideabi)
4 changes: 0 additions & 4 deletions triplets/community/arm-neon-android.cmake

This file was deleted.

1 change: 1 addition & 0 deletions triplets/community/arm64-android.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ set(VCPKG_TARGET_ARCHITECTURE arm64)
set(VCPKG_CRT_LINKAGE static)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CMAKE_SYSTEM_NAME Android)
set(VCPKG_MAKE_BUILD_TRIPLET aarch64-linux-android)
m-kuhn marked this conversation as resolved.
Show resolved Hide resolved
1 change: 1 addition & 0 deletions triplets/community/x64-android.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE static)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CMAKE_SYSTEM_NAME Android)
set(VCPKG_MAKE_BUILD_TRIPLET x86_64-linux-android)
1 change: 1 addition & 0 deletions triplets/community/x86-android.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ set(VCPKG_TARGET_ARCHITECTURE x86)
set(VCPKG_CRT_LINKAGE static)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CMAKE_SYSTEM_NAME Android)
set(VCPKG_MAKE_BUILD_TRIPLET i686-linux-android)
4 changes: 2 additions & 2 deletions versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -7513,8 +7513,8 @@
"port-version": 1
},
"vcpkg-cmake-get-vars": {
"baseline": "2022-05-10",
"port-version": 1
"baseline": "2022-08-28",
"port-version": 0
},
"vcpkg-get-python-packages": {
"baseline": "2022-06-30",
Expand Down
5 changes: 5 additions & 0 deletions versions/v-/vcpkg-cmake-get-vars.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "3757d3ec1dc34986d79da98e5999d32c551da6be",
"version-date": "2022-08-28",
"port-version": 0
},
{
"git-tree": "b50ca3d20736304215fbd82c102d4552457255bb",
"version-date": "2022-05-10",
Expand Down