diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml index a5dedd8d9..9ee679393 100644 --- a/.github/workflows/flutter-build.yml +++ b/.github/workflows/flutter-build.yml @@ -1225,6 +1225,9 @@ jobs: - name: Install vcpkg dependencies run: | + pushd $VCPKG_ROOT + git apply "$OLDPWD/res/vcpkg/0001-Extend-crosscompiling-efforts-to-other-architectures.patch" + popd $VCPKG_ROOT/vcpkg install --triplet arm-linux --x-install-root="$VCPKG_ROOT/installed" shell: bash diff --git a/res/vcpkg/0001-Extend-crosscompiling-efforts-to-other-architectures.patch b/res/vcpkg/0001-Extend-crosscompiling-efforts-to-other-architectures.patch new file mode 100644 index 000000000..313bf939b --- /dev/null +++ b/res/vcpkg/0001-Extend-crosscompiling-efforts-to-other-architectures.patch @@ -0,0 +1,53 @@ +From 4f03e584befa8ccee59eb6e8556a11d968f1785f Mon Sep 17 00:00:00 2001 +From: Vasyl Gello +Date: Mon, 13 Nov 2023 05:30:49 +0000 +Subject: [PATCH] Extend crosscompiling efforts to other architectures + +Signed-off-by: Vasyl Gello +--- + scripts/toolchains/linux.cmake | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/scripts/toolchains/linux.cmake b/scripts/toolchains/linux.cmake +index f19940b..f22c710 100644 +--- a/scripts/toolchains/linux.cmake ++++ b/scripts/toolchains/linux.cmake +@@ -13,7 +13,7 @@ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + string(APPEND VCPKG_LINKER_FLAGS " -m32") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(CMAKE_SYSTEM_PROCESSOR armv7l CACHE STRING "") +- if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") ++ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") + if(NOT DEFINED CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++") + endif() +@@ -25,12 +25,12 @@ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + endif() + if(NOT DEFINED CMAKE_ASM-ATT_COMPILER) + set(CMAKE_ASM-ATT_COMPILER "arm-linux-gnueabihf-as") +- endif() +- message(STATUS "Cross compiling arm on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") ++ endif() ++ message(STATUS "Cross compiling arm on host ${CMAKE_HOST_SYSTEM_PROCESSOR}, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") + endif() + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR aarch64 CACHE STRING "") +- if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") ++ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") + if(NOT DEFINED CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++") + endif() +@@ -42,8 +42,8 @@ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + endif() + if(NOT DEFINED CMAKE_ASM-ATT_COMPILER) + set(CMAKE_ASM-ATT_COMPILER "aarch64-linux-gnu-as") +- endif() +- message(STATUS "Cross compiling arm64 on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") ++ endif() ++ message(STATUS "Cross compiling arm64 on host ${CMAKE_HOST_SYSTEM_PROCESSOR}, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") + endif() + endif() + +-- +2.40.1 + diff --git a/res/vcpkg/libvpx/portfile.cmake b/res/vcpkg/libvpx/portfile.cmake index 8bf06f0e8..f3c3419e5 100644 --- a/res/vcpkg/libvpx/portfile.cmake +++ b/res/vcpkg/libvpx/portfile.cmake @@ -130,9 +130,7 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) endif() else() - vcpkg_find_acquire_program(YASM) - get_filename_component(YASM_EXE_PATH ${YASM} DIRECTORY) - vcpkg_add_to_path(${YASM_EXE_PATH}) + yasm_tool_helper(APPEND_TO_PATH) set(OPTIONS "--disable-examples --disable-tools --disable-docs --disable-unit-tests --enable-pic") @@ -169,12 +167,17 @@ else() include("${cmake_vars_file}") # Set environment variables for configure - set(ENV{CC} ${VCPKG_DETECTED_CMAKE_C_COMPILER}) - set(ENV{CXX} ${VCPKG_DETECTED_CMAKE_CXX_COMPILER}) - set(ENV{AR} ${VCPKG_DETECTED_CMAKE_AR}) - set(ENV{LD} ${VCPKG_DETECTED_CMAKE_LINKER}) - set(ENV{RANLIB} ${VCPKG_DETECTED_CMAKE_RANLIB}) - set(ENV{STRIP} ${VCPKG_DETECTED_CMAKE_STRIP}) + if(VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES "([^\/]*-)gcc$") + message(STATUS "Cross-building for ${TARGET_TRIPLET} with ${CMAKE_MATCH_1}") + set(ENV{CROSS} ${CMAKE_MATCH_1}) + else() + set(ENV{CC} ${VCPKG_DETECTED_CMAKE_C_COMPILER}) + set(ENV{CXX} ${VCPKG_DETECTED_CMAKE_CXX_COMPILER}) + set(ENV{AR} ${VCPKG_DETECTED_CMAKE_AR}) + set(ENV{LD} ${VCPKG_DETECTED_CMAKE_LINKER}) + set(ENV{RANLIB} ${VCPKG_DETECTED_CMAKE_RANLIB}) + set(ENV{STRIP} ${VCPKG_DETECTED_CMAKE_STRIP}) + endif() if(VCPKG_TARGET_IS_MINGW) if(LIBVPX_TARGET_ARCH STREQUAL "x86") @@ -184,16 +187,6 @@ else() endif() elseif(VCPKG_TARGET_IS_LINUX) set(LIBVPX_TARGET "${LIBVPX_TARGET_ARCH}-linux-gcc") - if(VCPKG_TARGET_ARCHITECTURE STREQUAL arm AND NOT VCPKG_DETECTED_CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL arm) - message(STATUS "Cross-building for arm-linux with arm-linux-gnueabihf") - set(ENV{CROSS} "arm-linux-gnueabihf-") - unset(ENV{CC}) - unset(ENV{CXX}) - unset(ENV{AR}) - unset(ENV{LD}) - unset(ENV{RANLIB}) - unset(ENV{STRIP}) - endif() elseif(VCPKG_TARGET_IS_ANDROID) set(LIBVPX_TARGET "generic-gnu") # Settings @@ -255,7 +248,7 @@ else() message(STATUS "Building libvpx for Release") vcpkg_execute_required_process( COMMAND - ${BASH} --noprofile --norc -c "make -j" + ${BASH} --noprofile --norc -c "make -j${VCPKG_CONCURRENCY}" WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" LOGNAME build-${TARGET_TRIPLET}-rel ) @@ -288,7 +281,7 @@ else() message(STATUS "Building libvpx for Debug") vcpkg_execute_required_process( COMMAND - ${BASH} --noprofile --norc -c "make -j" + ${BASH} --noprofile --norc -c "make -j${VCPKG_CONCURRENCY}" WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg" LOGNAME build-${TARGET_TRIPLET}-dbg ) diff --git a/res/vcpkg/libvpx/vcpkg.json b/res/vcpkg/libvpx/vcpkg.json index 81ab0cb79..5c8137363 100644 --- a/res/vcpkg/libvpx/vcpkg.json +++ b/res/vcpkg/libvpx/vcpkg.json @@ -5,14 +5,22 @@ "homepage": "https://github.com/webmproject/libvpx", "license": "BSD-3-Clause", "dependencies": [ + { + "name": "vcpkg-cmake-get-vars", + "host": true + }, { "name": "vcpkg-msbuild", "host": true, "platform": "windows" }, { - "name": "vcpkg-cmake-get-vars", - "host": true + "name": "yasm", + "host": true, + "features": [ + "tools" + ], + "platform": "!(windows & !mingw)" } ], "features": { diff --git a/res/vcpkg/opus/portfile.cmake b/res/vcpkg/opus/portfile.cmake index 34b038db6..f4fb2ac94 100644 --- a/res/vcpkg/opus/portfile.cmake +++ b/res/vcpkg/opus/portfile.cmake @@ -5,7 +5,6 @@ vcpkg_from_github( SHA512 86df35cd62ebf3551b2739effb8f818d635656d91d386d7d600a424a92c4c0d6bfbc3986f1ec6cf4950910ac87b28dc9640b9df3b9a6a5a75eb37ae71782b72e HEAD_REF master PATCHES fix-pkgconfig-version.patch - reinstate-opus-use-neon.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS @@ -24,10 +23,11 @@ else() set(STACK_PROTECTOR ON) endif() -# Fix build on mingw arm{,64}-* and arm-linux -if(VCPKG_TARGET_ARCHITECTURE MATCHES "^(ARM|arm)") - list(APPEND ADDITIONAL_OPUS_OPTIONS "-DOPUS_USE_NEON=OFF") # for version 1.3.1 (remove for future Opus release) - list(APPEND ADDITIONAL_OPUS_OPTIONS "-DOPUS_DISABLE_INTRINSICS=ON") # for HEAD (and future Opus release) +if((VCPKG_TARGET_IS_MINGW AND VCPKG_TARGET_ARCHITECTURE MATCHES "^arm") OR + (VCPKG_TARGET_IS_LINUX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") OR + (VCPKG_TARGET_IS_ANDROID AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_CMAKE_CONFIGURE_OPTIONS MATCHES "ANDROID_ARM_NEON")) + message(STATUS "Disabling ARM NEON and intrinsics on ${TARGET_TRIPLET}") + list(APPEND ADDITIONAL_OPUS_OPTIONS "-DOPUS_DISABLE_INTRINSICS=ON -DCOMPILER_SUPPORTS_NEON=OFF") # for HEAD (and future Opus release) endif() vcpkg_cmake_configure( diff --git a/res/vcpkg/opus/reinstate-opus-use-neon.patch b/res/vcpkg/opus/reinstate-opus-use-neon.patch deleted file mode 100644 index ce213a988..000000000 --- a/res/vcpkg/opus/reinstate-opus-use-neon.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9d824cd..8ff44a0 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -467,7 +467,7 @@ if(NOT OPUS_DISABLE_INTRINSICS) - endif() - endif() - -- if(COMPILER_SUPPORT_NEON) -+ if(COMPILER_SUPPORT_NEON AND OPUS_USE_NEON) - if(OPUS_MAY_HAVE_NEON) - if(RUNTIME_CPU_CAPABILITY_DETECTION) - message(STATUS "OPUS_MAY_HAVE_NEON enabling runtime detection")