From: David Marchand Date: Fri, 6 May 2022 11:57:36 +0000 (+0200) Subject: ci: add MinGW cross-compilation in GHA X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=2261dbe944c8fe109ee94c42dd55831f3ca87169;p=dpdk.git ci: add MinGW cross-compilation in GHA Add mingw cross compilation in our public CI so that users with their own github repository have a first level of checks for Windows compilation before submitting to the mailing list. This does not replace our better checks in other entities of the CI. Only the helloworld example is compiled (same as what is tested in test-meson-builds.sh). Note: the mingw cross compilation toolchain (version 5.0) in Ubuntu 18.04 was broken (missing a ENOMSG definition). Signed-off-by: David Marchand Acked-by: Aaron Conole --- diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index 2dea0c93fa..877243c9c8 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -56,16 +56,26 @@ catch_coredump() { return 1 } +cross_file= + if [ "$AARCH64" = "true" ]; then if [ "${CC%%clang}" != "$CC" ]; then - OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_clang_ubuntu" + cross_file=config/arm/arm64_armv8_linux_clang_ubuntu else - OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_gcc" + cross_file=config/arm/arm64_armv8_linux_gcc fi fi +if [ "$MINGW" = "true" ]; then + cross_file=config/x86/cross-mingw +fi + if [ "$PPC64LE" = "true" ]; then - OPTS="$OPTS --cross-file config/ppc/ppc64le-power8-linux-gcc-ubuntu" + cross_file=config/ppc/ppc64le-power8-linux-gcc-ubuntu +fi + +if [ -n "$cross_file" ]; then + OPTS="$OPTS --cross-file $cross_file" fi if [ "$BUILD_DOCS" = "true" ]; then @@ -78,7 +88,9 @@ if [ "$BUILD_32BIT" = "true" ]; then export PKG_CONFIG_LIBDIR="/usr/lib32/pkgconfig" fi -if [ "$DEF_LIB" = "static" ]; then +if [ "$MINGW" = "true" ]; then + OPTS="$OPTS -Dexamples=helloworld" +elif [ "$DEF_LIB" = "static" ]; then OPTS="$OPTS -Dexamples=l2fwd,l3fwd" else OPTS="$OPTS -Dexamples=all" @@ -95,7 +107,7 @@ fi meson build --werror $OPTS ninja -C build -if [ "$AARCH64" != "true" ] && [ "$PPC64LE" != "true" ]; then +if [ -z "$cross_file" ]; then failed= configure_coredump devtools/test-null.sh || failed="true" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 812aa7055d..e2f94d786b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,6 +21,7 @@ jobs: CC: ccache ${{ matrix.config.compiler }} DEF_LIB: ${{ matrix.config.library }} LIBABIGAIL_VERSION: libabigail-1.8 + MINGW: ${{ matrix.config.cross == 'mingw' }} MINI: ${{ matrix.config.mini != '' }} PPC64LE: ${{ matrix.config.cross == 'ppc64le' }} REF_GIT_TAG: v22.03 @@ -52,6 +53,10 @@ jobs: compiler: gcc library: static cross: i386 + - os: ubuntu-20.04 + compiler: gcc + library: static + cross: mingw - os: ubuntu-20.04 compiler: gcc library: static @@ -119,6 +124,9 @@ jobs: if: env.AARCH64 == 'true' run: sudo apt install -y gcc-aarch64-linux-gnu libc6-dev-arm64-cross pkg-config-aarch64-linux-gnu + - name: Install mingw cross compiling packages + if: env.MINGW == 'true' + run: sudo apt install -y mingw-w64 mingw-w64-tools - name: Install ppc64le cross compiling packages if: env.PPC64LE == 'true' run: sudo apt install -y gcc-powerpc64le-linux-gnu libc6-dev-ppc64el-cross