# # 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 }}'