# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


# ----------------------
#
#  This workflow builds the native binaries for lib.profiler, meaning it
#  builds the so-called 'profilerinterface' library from the C source code
#  hosted in profiler/lib.profiler/native.
#
#  The following builds are made:
#    - On a Linux X64 host (Ubuntu):
#          - Linux X86 binary
#          - Linux X64 binary
#    - On a MacOS X64 host:
#          - MacOS X64 binary
#          - (for the future: we can consider an Apple Sillicon build here
#             as well, aka 'arm64', but currently this is not implemented)
#    - On a Windows Server X64 host:
#          - Windows X86 binary
#          - Windows X64 binary
#
#  ..meaning we build 32-bit binaries on 64-bit hosts.
#
#  The result of the build is file 'profiler-external-binaries-ASF.zip'
#  which can be downloaded from the GitHub Actions UI and then uploaded
#  to https://netbeans.osuosl.org/binaries/ so as to be used up by the
#  Ant build scripts for the NetBeans distribution.
#
#  Historically there has been native builds made of this code for other
#  platforms, e.g Solaris SPARC, HP-UX and so on. We no longer care about
#  such platforms, however build scripts for such platforms still exists in
#  the repo in the 'legacy' folder.
#
# ----------------------




name: Profiler native binary build



on:
  # Triggers the workflow on push or pull request events but only for
  # relevant paths
  push:
    paths:
      - .github/workflows/native-binary-build-lib.profiler.y*
      - profiler/lib.profiler/**

  pull_request:
    paths:
      - .github/workflows/native-binary-build-lib.profiler.y*
      - profiler/lib.profiler/**

  # Allows you to run this workflow manually from the Actions tab in GitHub UI
  workflow_dispatch:



jobs:
  build-linux:

    runs-on: ubuntu-latest

    steps:
    # Step 1
    #   Checkout source code from repository
    #
    - name: Checkout source code
      uses: actions/checkout@v2
      with:
        persist-credentials: false
    #
    # Step 2
    #   Ant build NetBeans lib.profiler module. The sole reason for doing this - in the
    #   context of the native binaries for the Profiler - is to have JNI header files
    #   generated which are needed in step 3.
    #
    - name: Generate JNI header files
      run: |
         export JDK_HOME=${JAVA_HOME_8_X64}
         echo "Building NbBuild bootstrap (needed for next step)"
         ant bootstrap
         echo "Building lib.profiler module"
         cd profiler/lib.profiler && ant compile
    #
    # Step 3
    #   Build the native binary from C source code
    #
    - name: Build native lib
      run: |
         export JDK_HOME=${JAVA_HOME_8_X64}
         #
         #
         echo "Building 64-bit binary"
         rm -f ../../release/lib/deployed/jdk16/linux-amd64/*.*
         bash -e -x ./buildnative-linux64.sh
         ls -l -R ../../release/lib/deployed/jdk16/linux-amd64
         #
         #
         echo "Building 32-bit binary"
         # Since we are on 64-bit system it means we do not by default have support
         # for creating 32-bit binaries, however this support comes if we install
         # the 'gcc-multilib' package for GNU C/C++.
         sudo apt-get update
         sudo apt-get install gcc-multilib
         rm -f ../../release/lib/deployed/jdk16/linux/*.*
         bash -e -x ./buildnative-linux.sh
         ls -l -R ../../release/lib/deployed/jdk16/linux
         #
         #
         echo "done"
      working-directory: profiler/lib.profiler/native/scripts
    #
    # Step 4
    #   Upload interim build artifacts to GitHub
    #
    - name: Upload artifact Linux 64 bit
      uses: actions/upload-artifact@v2
      with:
        name: linux-amd64
        path: profiler/lib.profiler/release/lib/deployed/jdk16/linux-amd64/
        if-no-files-found: error
    - name: Upload artifact Linux 32 bit
      uses: actions/upload-artifact@v2
      with:
        name: linux
        path: profiler/lib.profiler/release/lib/deployed/jdk16/linux/
        if-no-files-found: error




  build-windows:

    runs-on: windows-latest

    steps:
    # Step 1
    #   Checkout source code from repository
    #
    - name: Checkout source code
      uses: actions/checkout@v2
      with:
        persist-credentials: false
    #
    # Step 2
    #   Ant build NetBeans lib.profiler module. The sole reason for doing this - in the
    #   context of the native binaries for the Profiler - is to have JNI header files
    #   generated which are needed in step 3.
    #
    - name: Generate JNI header files
      run: |
         set JDK_HOME=%JAVA_HOME_8_X64%
         echo "Building NbBuild bootstrap (needed for next step)"
         ant bootstrap
         echo "Building lib.profiler module"
         cd profiler/lib.profiler && ant compile
      shell: cmd
    #
    # Step 3
    #   Build the native binary from C source code
    #
    #   Use Windows 10 SDK 10.0.20348.0 since build fails with Windows 11 SDK 10.0.22000.0
    #   https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=msvc-170#vcvarsall-syntax
    #   https://bugs.python.org/issue45220
    #
    - name: Build native lib (64-bit)
      run: |
         echo on
         set JDK_HOME=%JAVA_HOME_8_X64%
         echo "Building 64-bit binary"
         set OUTPUTDIR=../../release/lib/deployed/jdk16/windows-amd64
         del /q /s "%OUTPUTDIR%"
         rem  set up a Visual Studio command prompt for 64-bit development
         call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" 10.0.20348.0
         rem
         rem
         call buildnative-windows64-16.bat
         if exist "%OUTPUTDIR%\profilerinterface.lib" del "%OUTPUTDIR%\profilerinterface.lib"
         if exist "%OUTPUTDIR%\profilerinterface.exp" del "%OUTPUTDIR%\profilerinterface.exp"
         ls -l -R "%OUTPUTDIR%"
         echo "done"
      shell: cmd
      working-directory: profiler/lib.profiler/native/scripts
    - name: Build native lib (32-bit)
      run: |
         echo on
         set JDK_HOME=%JAVA_HOME_8_X64%
         echo "Building 32-bit binary"
         set OUTPUTDIR=../../release/lib/deployed/jdk16/windows
         del /q /s "%OUTPUTDIR%"
         rem   set up a Visual Studio command prompt for 32-bit development
         call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars32.bat" 10.0.20348.0
         rem
         rem
         call buildnative-windows-16.bat
         if exist "%OUTPUTDIR%\profilerinterface.lib" del "%OUTPUTDIR%\profilerinterface.lib"
         if exist "%OUTPUTDIR%\profilerinterface.exp" del "%OUTPUTDIR%\profilerinterface.exp"
         ls -l -R "%OUTPUTDIR%"
         echo "done"
      shell: cmd
      working-directory: profiler/lib.profiler/native/scripts
    #
    # Step 4
    #   Upload interim build artifacts to GitHub
    #
    - name: Upload artifact Windows 64 bit
      uses: actions/upload-artifact@v2
      with:
        name: windows-amd64
        path: profiler/lib.profiler/release/lib/deployed/jdk16/windows-amd64/
        if-no-files-found: error
    - name: Upload artifact Windows 32 bit
      uses: actions/upload-artifact@v2
      with:
        name: windows
        path: profiler/lib.profiler/release/lib/deployed/jdk16/windows/
        if-no-files-found: error


  build-macos:

    runs-on: macos-latest

    steps:
    # Step 1
    #   Checkout source code from repository
    #
    - name: Checkout source code
      uses: actions/checkout@v2
      with:
        persist-credentials: false
    #
    # Step 2
    #   Ant build NetBeans lib.profiler module. The sole reason for doing this - in the
    #   context of the native binaries for the Profiler - is to have JNI header files
    #   generated which are needed in step 3.
    #
    - name: Generate JNI header files
      run: |
         export JDK_HOME=${JAVA_HOME_8_X64}
         echo "Building NbBuild bootstrap (needed for next step)"
         ant bootstrap
         echo "Building lib.profiler module"
         cd profiler/lib.profiler && ant compile
    #
    # Step 3
    #   Build the native binary from C source code
    #
    - name: Build native lib
      run: |
         export JDK_HOME=${JAVA_HOME_8_X64}
         #
         #
         echo "Building 64-bit binary"
         bash -e -x ./buildnative-mac.sh
         ls -l -R ../../release/lib/deployed/jdk16/mac
         #
         #
         echo "done"
      working-directory: profiler/lib.profiler/native/scripts
    #
    # Step 4
    #   Upload interim build artifacts to GitHub
    #
    - name: Upload artifact MacOS 64 bit
      uses: actions/upload-artifact@v2
      with:
        name: mac
        path: profiler/lib.profiler/release/lib/deployed/jdk16/mac/
        if-no-files-found: error


  build-zip-with-build-artifacts:

    runs-on: ubuntu-latest

    # Only run when the platform specific builds are finished
    needs: [build-linux,build-windows,build-macos]

    steps:

    - name: Create dir structure
      run: mkdir -p myfiles/lib/deployed/jdk16

    - name: Download artifacts from predecessor jobs
      uses: actions/download-artifact@v2
      with:
        path: myfiles/lib/deployed/jdk16

    - name: Display structure of downloaded files
      run: ls -l -R

    - name: Create BUILDINFO
      run: |
         BUILDINFO="myfiles/BUILDINFO.txt"
         touch "$BUILDINFO"
         echo "Apache NetBeans"                                                >> "$BUILDINFO"
         echo ""                                                               >> "$BUILDINFO"
         echo "Binaries in this ZIP are..."                                    >> "$BUILDINFO"
         echo "Build by GitHub Actions Workflow: ${GITHUB_WORKFLOW}"           >> "$BUILDINFO"
         echo ""                                                               >> "$BUILDINFO"
         echo "Build from:"                                                    >> "$BUILDINFO"
         echo "   Git repo       : ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}"  >> "$BUILDINFO"
         echo "   Git commit SHA : ${GITHUB_SHA}"                              >> "$BUILDINFO"
         echo "   Git ref        : ${GITHUB_REF}"                              >> "$BUILDINFO"
         echo ""                                                               >> "$BUILDINFO"
         echo "Build time UTC : $(date --rfc-3339=seconds --utc)"              >> "$BUILDINFO"
         echo ""                                                               >> "$BUILDINFO"


    - name: Upload bundle
      uses: actions/upload-artifact@v2
      with:
        name: profiler-external-binaries-ASF
        path: myfiles/
        if-no-files-found: error
