From bfe282c2dbcb3fd60e84f569f8b8ecff7c4fdc1c Mon Sep 17 00:00:00 2001 From: Vasyl Gello Date: Wed, 15 Nov 2023 12:47:33 +0200 Subject: [PATCH 1/2] VCPKG port fixes * Do not patch vcpkg - replace the cmake script fully * Actualize libvpx port [skip ci] Signed-off-by: Vasyl Gello --- .github/workflows/flutter-build.yml | 4 +- ...iling-efforts-to-other-architectures.patch | 53 ------------- res/vcpkg/libvpx/portfile.cmake | 18 +++-- res/vcpkg/libvpx/vcpkg.json | 8 -- res/vcpkg/linux.cmake | 74 +++++++++++++++++++ 5 files changed, 85 insertions(+), 72 deletions(-) delete mode 100644 res/vcpkg/0001-Extend-crosscompiling-efforts-to-other-architectures.patch create mode 100644 res/vcpkg/linux.cmake diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml index a960f72cc..19cdd3a31 100644 --- a/.github/workflows/flutter-build.yml +++ b/.github/workflows/flutter-build.yml @@ -1225,9 +1225,7 @@ jobs: - name: Install vcpkg dependencies run: | - pushd $VCPKG_ROOT - git apply --ignore-space-change "$OLDPWD/res/vcpkg/0001-Extend-crosscompiling-efforts-to-other-architectures.patch" - popd + cp $PWD/res/vcpkg/linux.cmake $VCPKG_ROOT/scripts/toolchains/linux.cmake $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 deleted file mode 100644 index 313bf939b..000000000 --- a/res/vcpkg/0001-Extend-crosscompiling-efforts-to-other-architectures.patch +++ /dev/null @@ -1,53 +0,0 @@ -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 f3c3419e5..30f794314 100644 --- a/res/vcpkg/libvpx/portfile.cmake +++ b/res/vcpkg/libvpx/portfile.cmake @@ -26,10 +26,11 @@ else() set(ENV{PATH} "${MSYS_ROOT}/usr/bin:$ENV{PATH}:${PERL_EXE_PATH}") endif() +vcpkg_find_acquire_program(NASM) +get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY) +vcpkg_add_to_path(${NASM_EXE_PATH}) + if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - vcpkg_find_acquire_program(NASM) - get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY) - vcpkg_add_to_path(${NASM_EXE_PATH}) file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-tmp") @@ -130,12 +131,12 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) endif() else() - yasm_tool_helper(APPEND_TO_PATH) set(OPTIONS "--disable-examples --disable-tools --disable-docs --disable-unit-tests --enable-pic") set(OPTIONS_DEBUG "--enable-debug-libs --enable-debug --prefix=${CURRENT_PACKAGES_DIR}/debug") set(OPTIONS_RELEASE "--prefix=${CURRENT_PACKAGES_DIR}") + set(AS_NASM "--as=nasm") if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") set(OPTIONS "${OPTIONS} --disable-static --enable-shared") @@ -170,6 +171,7 @@ else() 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}) + unset(AS_NASM) else() set(ENV{CC} ${VCPKG_DETECTED_CMAKE_C_COMPILER}) set(ENV{CXX} ${VCPKG_DETECTED_CMAKE_CXX_COMPILER}) @@ -191,16 +193,12 @@ else() set(LIBVPX_TARGET "generic-gnu") # Settings if(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) - set(ANDROID_TARGET_TRIPLET i686-linux-android) set(OPTIONS "${OPTIONS} --disable-sse4_1 --disable-avx --disable-avx2 --disable-avx512") elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) - set(ANDROID_TARGET_TRIPLET x86_64-linux-android) set(OPTIONS "${OPTIONS} --disable-avx --disable-avx2 --disable-avx512") elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm) - set(ANDROID_TARGET_TRIPLET armv7a-linux-androideabi) set(OPTIONS "${OPTIONS} --enable-thumb --disable-neon") elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm64) - set(ANDROID_TARGET_TRIPLET aarch64-linux-android) set(OPTIONS "${OPTIONS} --enable-thumb") endif() # Set environment variables for configure @@ -208,6 +206,8 @@ else() set(ENV{LDFLAGS} "${LDFLAGS} --target=${VCPKG_DETECTED_CMAKE_C_COMPILER_TARGET}") # Set clang target set(OPTIONS "${OPTIONS} --extra-cflags=--target=${VCPKG_DETECTED_CMAKE_C_COMPILER_TARGET} --extra-cxxflags=--target=${VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET}") + # Unset nasm and let AS do its job + unset(AS_NASM) elseif(VCPKG_TARGET_IS_OSX) if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") set(LIBVPX_TARGET "arm64-darwin20-gcc") @@ -242,6 +242,7 @@ else() ${OPTIONS} ${OPTIONS_RELEASE} ${MAC_OSX_MIN_VERSION_CFLAGS} + ${AS_NASM} WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" LOGNAME configure-${TARGET_TRIPLET}-rel) @@ -275,6 +276,7 @@ else() ${OPTIONS} ${OPTIONS_DEBUG} ${MAC_OSX_MIN_VERSION_CFLAGS} + ${AS_NASM} WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg" LOGNAME configure-${TARGET_TRIPLET}-dbg) diff --git a/res/vcpkg/libvpx/vcpkg.json b/res/vcpkg/libvpx/vcpkg.json index 5c8137363..0a11ff7ea 100644 --- a/res/vcpkg/libvpx/vcpkg.json +++ b/res/vcpkg/libvpx/vcpkg.json @@ -13,14 +13,6 @@ "name": "vcpkg-msbuild", "host": true, "platform": "windows" - }, - { - "name": "yasm", - "host": true, - "features": [ - "tools" - ], - "platform": "!(windows & !mingw)" } ], "features": { diff --git a/res/vcpkg/linux.cmake b/res/vcpkg/linux.cmake new file mode 100644 index 000000000..9496930d0 --- /dev/null +++ b/res/vcpkg/linux.cmake @@ -0,0 +1,74 @@ +if(NOT _VCPKG_LINUX_TOOLCHAIN) +set(_VCPKG_LINUX_TOOLCHAIN 1) +if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") + set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") +endif() +set(CMAKE_SYSTEM_NAME Linux CACHE STRING "") +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") + string(APPEND VCPKG_C_FLAGS " -m32") + string(APPEND VCPKG_CXX_FLAGS " -m32") + 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") + if(NOT DEFINED CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++") + endif() + if(NOT DEFINED CMAKE_C_COMPILER) + set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc") + endif() + if(NOT DEFINED CMAKE_ASM_COMPILER) + set(CMAKE_ASM_COMPILER "arm-linux-gnueabihf-gcc") + 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 ${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") + if(NOT DEFINED CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++") + endif() + if(NOT DEFINED CMAKE_C_COMPILER) + set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc") + endif() + if(NOT DEFINED CMAKE_ASM_COMPILER) + set(CMAKE_ASM_COMPILER "aarch64-linux-gnu-gcc") + 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 ${CMAKE_HOST_SYSTEM_PROCESSOR}, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") + endif() +endif() + +get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE ) +if(NOT _CMAKE_IN_TRY_COMPILE) + string(APPEND CMAKE_C_FLAGS_INIT " -fPIC ${VCPKG_C_FLAGS} ") + string(APPEND CMAKE_CXX_FLAGS_INIT " -fPIC ${VCPKG_CXX_FLAGS} ") + string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ${VCPKG_C_FLAGS_DEBUG} ") + string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " ${VCPKG_CXX_FLAGS_DEBUG} ") + string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " ${VCPKG_C_FLAGS_RELEASE} ") + string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " ${VCPKG_CXX_FLAGS_RELEASE} ") + + string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") + string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") + if(VCPKG_CRT_LINKAGE STREQUAL "static") + string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT "-static ") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT "-static ") + string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT "-static ") + endif() + string(APPEND CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") + string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") + string(APPEND CMAKE_MODULE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") + string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") +endif() +endif() From 2d995826ad4f12b0fab8248edc6ee79c994bcdc7 Mon Sep 17 00:00:00 2001 From: Vasyl Gello Date: Wed, 15 Nov 2023 16:03:40 +0200 Subject: [PATCH 2/2] Globally drop yasm - libvpx should not need it Signed-off-by: Vasyl Gello --- .github/workflows/bridge.yml | 3 +-- .github/workflows/ci.yml | 3 +-- .github/workflows/flutter-build.yml | 40 ++++++++++------------------- 3 files changed, 15 insertions(+), 31 deletions(-) diff --git a/.github/workflows/bridge.yml b/.github/workflows/bridge.yml index 5b9367221..d8cd17f58 100644 --- a/.github/workflows/bridge.yml +++ b/.github/workflows/bridge.yml @@ -44,8 +44,7 @@ jobs: nasm \ ninja-build \ pkg-config \ - wget \ - yasm + wget - name: Install Rust toolchain uses: actions-rs/toolchain@v1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 080a0b743..9ac826a3c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,8 +114,7 @@ jobs: libxdo-dev \ libxfixes-dev \ nasm \ - wget \ - yasm + wget ;; # arm-unknown-linux-*) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;; # aarch64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;; diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml index 19cdd3a31..90e5cf962 100644 --- a/.github/workflows/flutter-build.yml +++ b/.github/workflows/flutter-build.yml @@ -348,7 +348,7 @@ jobs: - name: Install build runtime run: | - brew install llvm create-dmg nasm yasm cmake gcc wget ninja pkg-config + brew install llvm create-dmg nasm cmake gcc wget ninja pkg-config - name: Install flutter uses: subosito/flutter-action@v2 @@ -459,7 +459,7 @@ jobs: - name: Install dependencies run: | - brew install nasm yasm + brew install nasm - name: Checkout source code uses: actions/checkout@v3 - name: Install flutter @@ -592,8 +592,7 @@ jobs: openjdk-11-jdk-headless \ pkg-config \ tree \ - wget \ - yasm + wget - name: Checkout source code uses: actions/checkout@v3 @@ -782,7 +781,7 @@ jobs: sudo rm -rf /usr/local/lib/android sudo rm -rf /usr/share/dotnet sudo apt-get update -y - sudo apt-get install -y nasm qemu-user-static yasm + sudo apt-get install -y nasm qemu-user-static - name: Checkout source code uses: actions/checkout@v3 @@ -880,8 +879,7 @@ jobs: ninja-build \ pkg-config \ tree \ - wget \ - yasm + wget # we have libopus compiled by us. apt-get remove -y libopus-dev || true # output devs @@ -985,7 +983,6 @@ jobs: unzip \ xz-utils \ wget \ - yasm \ zip #- name: Maximize build space @@ -1097,8 +1094,7 @@ jobs: ninja-build \ pkg-config \ tree \ - wget \ - yasm + wget # we have libopus compiled by us. apt-get remove -y libopus-dev || true # output devs @@ -1180,7 +1176,6 @@ jobs: pkg-config \ unzip \ xz-utils \ - yasm \ zip #- name: Maximize build space @@ -1277,8 +1272,7 @@ jobs: rpm \ unzip \ wget \ - xz-utils \ - yasm + xz-utils run: | # disable git safe.directory git config --global --add safe.directory "*" @@ -1390,8 +1384,7 @@ jobs: libarchive-tools \ libgtk-3-dev \ nasm \ - wget \ - yasm + wget mkdir -p ./target/release/ - name: Restore the rustdesk lib file @@ -1447,8 +1440,7 @@ jobs: rpm \ unzip \ wget \ - xz-utils \ - yasm + xz-utils run: | # disable git safe.directory git config --global --add safe.directory "*" @@ -1592,7 +1584,6 @@ jobs: # gcc # curl # wget - # yasm # nasm # zip # make @@ -1676,8 +1667,7 @@ jobs: libarchive-tools \ libgtk-3-dev \ nasm \ - wget \ - yasm + wget mkdir -p ./target/release/ - name: Restore the rustdesk lib file @@ -1719,8 +1709,7 @@ jobs: rpm \ unzip \ wget \ - xz-utils \ - yasm + xz-utils run: | # disable git safe.directory git config --global --add safe.directory "*" @@ -1806,7 +1795,6 @@ jobs: gcc curl wget - yasm nasm zip make @@ -1923,8 +1911,7 @@ jobs: # g++ \ # libgtk-3-dev \ # nasm \ - # wget \ - # yasm + # wget # # flatpak deps # flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # flatpak --user install -y flathub org.freedesktop.Platform/${{ matrix.job.arch }}/23.08 @@ -2001,8 +1988,7 @@ jobs: g++ \ libgtk-3-dev \ nasm \ - wget \ - yasm + wget # flatpak deps flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak --user install -y flathub org.freedesktop.Platform/${{ matrix.job.arch }}/23.08