| # |
| # Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. |
| # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| # |
| # This code is free software; you can redistribute it and/or modify it |
| # under the terms of the GNU General Public License version 2 only, as |
| # published by the Free Software Foundation. Oracle designates this |
| # particular file as subject to the "Classpath" exception as provided |
| # by Oracle in the LICENSE file that accompanied this code. |
| # |
| # This code is distributed in the hope that it will be useful, but WITHOUT |
| # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| # version 2 for more details (a copy is included in the LICENSE file that |
| # accompanied this code). |
| # |
| # You should have received a copy of the GNU General Public License version |
| # 2 along with this work; if not, write to the Free Software Foundation, |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| # |
| # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| # or visit www.oracle.com if you need additional information or have any |
| # questions. |
| # |
| |
| name: 'Build (windows)' |
| |
| on: |
| workflow_call: |
| inputs: |
| platform: |
| required: true |
| type: string |
| extra-conf-options: |
| required: false |
| type: string |
| make-target: |
| required: false |
| type: string |
| default: 'product-bundles test-bundles' |
| debug-levels: |
| required: false |
| type: string |
| default: '[ "debug", "release" ]' |
| msvc-toolset-version: |
| required: true |
| type: string |
| msvc-toolset-architecture: |
| required: true |
| type: string |
| configure-arguments: |
| required: false |
| type: string |
| make-arguments: |
| required: false |
| type: string |
| |
| env: |
| # These are needed to make the MSYS2 bash work properly |
| MSYS2_PATH_TYPE: minimal |
| CHERE_INVOKING: 1 |
| |
| jobs: |
| build-windows: |
| name: build |
| runs-on: windows-2019 |
| defaults: |
| run: |
| shell: bash |
| |
| strategy: |
| fail-fast: false |
| matrix: |
| debug-level: ${{ fromJSON(inputs.debug-levels) }} |
| include: |
| - debug-level: debug |
| flags: --with-debug-level=fastdebug |
| suffix: -debug |
| |
| steps: |
| - name: 'Checkout the JDK source' |
| uses: actions/checkout@v4 |
| |
| - name: 'Get MSYS2' |
| uses: ./.github/actions/get-msys2 |
| |
| - name: 'Get the BootJDK' |
| id: bootjdk |
| uses: ./.github/actions/get-bootjdk |
| with: |
| platform: windows-x64 |
| |
| - name: 'Get JTReg' |
| id: jtreg |
| uses: ./.github/actions/get-jtreg |
| |
| - name: 'Get GTest' |
| id: gtest |
| uses: ./.github/actions/get-gtest |
| |
| - name: 'Check toolchain installed' |
| id: toolchain-check |
| run: | |
| set +e |
| '/c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/vc/auxiliary/build/vcvars64.bat' -vcvars_ver=${{ inputs.msvc-toolset-version }} |
| if [ $? -eq 0 ]; then |
| echo "Toolchain is already installed" |
| echo "toolchain-installed=true" >> $GITHUB_OUTPUT |
| else |
| echo "Toolchain is not yet installed" |
| echo "toolchain-installed=false" >> $GITHUB_OUTPUT |
| fi |
| |
| - name: 'Install toolchain and dependencies' |
| run: | |
| # Run Visual Studio Installer |
| '/c/Program Files (x86)/Microsoft Visual Studio/Installer/vs_installer.exe' \ |
| modify --quiet --installPath 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise' \ |
| --add Microsoft.VisualStudio.Component.VC.${{ inputs.msvc-toolset-version }}.${{ inputs.msvc-toolset-architecture }} |
| if: steps.toolchain-check.outputs.toolchain-installed != 'true' |
| |
| - name: 'Configure' |
| run: > |
| bash configure |
| --with-conf-name=${{ inputs.platform }} |
| ${{ matrix.flags }} |
| --with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA} |
| --with-boot-jdk=${{ steps.bootjdk.outputs.path }} |
| --with-jtreg=${{ steps.jtreg.outputs.path }} |
| --with-gtest=${{ steps.gtest.outputs.path }} |
| --with-msvc-toolset-version=${{ inputs.msvc-toolset-version }} |
| --with-jmod-compress=zip-1 |
| ${{ inputs.extra-conf-options }} ${{ inputs.configure-arguments }} || ( |
| echo "Dumping config.log:" && |
| cat config.log && |
| exit 1) |
| env: |
| # We need a minimal PATH on Windows |
| # Set PATH to "", so just GITHUB_PATH is included |
| PATH: '' |
| shell: env /usr/bin/bash --login -eo pipefail {0} |
| |
| - name: 'Build' |
| id: build |
| uses: ./.github/actions/do-build |
| with: |
| make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}' |
| platform: ${{ inputs.platform }} |
| debug-suffix: '${{ matrix.suffix }}' |
| |
| - name: 'Upload bundles' |
| uses: ./.github/actions/upload-bundles |
| with: |
| platform: ${{ inputs.platform }} |
| debug-suffix: '${{ matrix.suffix }}' |