From patchwork Fri May 6 11:57:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 110773 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 58E10A0503; Fri, 6 May 2022 13:57:57 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5E9244281C; Fri, 6 May 2022 13:57:55 +0200 (CEST) Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [170.10.129.74]) by mails.dpdk.org (Postfix) with ESMTP id 2E5A54280D for ; Fri, 6 May 2022 13:57:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651838272; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8TA8giYl65UDNZSQ5AyarTRT8swcyg58ExyniFW1a+k=; b=J5Zs1+r4cduRVI2uBIheAcwpB+sGjpzsyfgUXYVd00LfYsqtQHecOw933CsLiXphhDHXJA 0RRjaCx0ikU1c76B8dBH1RIY3VLEOJAX654BCdTuWsVuEJVw1Plxk97Nrq9kRUNUKIMFin wDOIPN9JuM50GeOoN85+tZ3F0spxzDU= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-635-DoQTkOAPNSK0oQLvUFP7lQ-1; Fri, 06 May 2022 07:57:51 -0400 X-MC-Unique: DoQTkOAPNSK0oQLvUFP7lQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4045C85A5A8; Fri, 6 May 2022 11:57:51 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.193.195]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7462B14682E3; Fri, 6 May 2022 11:57:50 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: Aaron Conole , Michael Santana Subject: [PATCH v2 2/2] ci: add mingw cross compilation in GHA Date: Fri, 6 May 2022 13:57:36 +0200 Message-Id: <20220506115736.8492-2-david.marchand@redhat.com> In-Reply-To: <20220506115736.8492-1-david.marchand@redhat.com> References: <20220426071828.1810-1-david.marchand@redhat.com> <20220506115736.8492-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=david.marchand@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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 --- .ci/linux-build.sh | 22 +++++++++++++++++----- .github/workflows/build.yml | 8 ++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) 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