Skip to content

-mm=own: a library exports which of its functions destroy nothing #1583

-mm=own: a library exports which of its functions destroy nothing

-mm=own: a library exports which of its functions destroy nothing #1583

name: Test - Release - Linux
on:
# push:
# branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
schedule:
# 8:30 and 18:30 UTC:
# - cron: '30 8,18 * * *'
- cron: '30 18 * * 1'
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
# The official LLVM release package, installed where a custom LLVM build would be - see
# scripts/install_llvm_prebuilt_release.sh.
LLVM_FULL_VERSION: "22.1.8"
GC_VERSION: "8.2.12"
LIBATOMIC_OPS_VERSION: "7.10.0"
jobs:
build:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-22.04
steps:
# - name: check disk space
# run: Get-PSDrive
# shell: pwsh
- uses: actions/checkout@v4
# No 3rdParty cache: the LLVM prefix is about 9.6 GB, too big for the cache, and downloading it
# from GitHub each run is quick; GC is rebuilt every run anyway.
- name: Delete __Build TS folders
continue-on-error: true
run: rm -R ./__build/tslang/ninja/release
shell: sh
- name: Create __Build Folders
run: mkdir -p ./__build/tslang/ninja/release; mkdir -p ./__build/gc/ninja/release
shell: sh
# Downloads and unpacks the official LLVM package - nothing is compiled.
- name: Install 3rd party - LLVM ${{ env.LLVM_FULL_VERSION }}
continue-on-error: false
shell: sh
run: sh ./scripts/install_llvm_prebuilt_release.sh ${{ env.LLVM_FULL_VERSION }} && df -h .
- name: Download 3rd party source - GC
continue-on-error: true
shell: sh
run: curl --insecure -L https://github.com/bdwgc/bdwgc/releases/download/v${{ env.GC_VERSION }}/gc-${{ env.GC_VERSION }}.tar.gz --output gc-${{ env.GC_VERSION }}.tar.gz
- name: Download 3rd party source - GC:Atomic_ops
continue-on-error: true
shell: sh
run: curl --insecure -L https://github.com/bdwgc/libatomic_ops/releases/download/v${{ env.LIBATOMIC_OPS_VERSION }}/libatomic_ops-${{ env.LIBATOMIC_OPS_VERSION }}.tar.gz --output libatomic_ops-${{ env.LIBATOMIC_OPS_VERSION }}.tar.gz
- name: UnZip 3rd party source - GC
continue-on-error: false
shell: sh
run: tar -xvzf gc-${{ env.GC_VERSION }}.tar.gz -C ./3rdParty/
- name: UnZip 3rd party source - GC:Atomic_ops
continue-on-error: false
shell: sh
run: tar -xvzf libatomic_ops-${{ env.LIBATOMIC_OPS_VERSION }}.tar.gz -C ./3rdParty/
- name: Copy Atomic_ops to GC
continue-on-error: false
shell: sh
run: cp -a ./3rdParty/libatomic_ops-${{ env.LIBATOMIC_OPS_VERSION }}/ ./3rdParty/gc-${{ env.GC_VERSION }}/libatomic_ops/
# zlib, zstd and libxml2: the official LLVM package's CMake targets link against them.
- name: Install Ninja and LLVM's link dependencies
continue-on-error: false
shell: sh
run: sudo apt-get update && sudo apt-get install -y ninja-build zlib1g-dev libzstd-dev libxml2-dev
# - name: Install Clang 12
# continue-on-error: false
# shell: sh
# run: sudo apt install clang-12
- name: Configure GC
continue-on-error: false
working-directory: ${{github.workspace}}/__build/gc/ninja/release
shell: sh
run: cmake ../../../../3rdParty/gc-${{ env.GC_VERSION }} -G "Ninja" -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -Wno-dev -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/3rdParty/gc/release -DBUILD_SHARED_LIBS=OFF -Denable_threads=ON -Denable_cplusplus=OFF -Denable_docs=OFF
- name: Build GC
continue-on-error: false
working-directory: ${{github.workspace}}/__build/gc/ninja/release
shell: sh
run: cmake --build . --config ${{ env.BUILD_TYPE }} -j 8
- name: Install GC
continue-on-error: false
working-directory: ${{github.workspace}}/__build/gc/ninja/release
shell: sh
# Generates the BDWgc CMake package files (lib/cmake/bdwgc/BDWgcConfig.cmake)
# that the tslang build looks up via find_package(BDWgc CONFIG).
run: cmake --install . --config ${{ env.BUILD_TYPE }}
- name: List GC files
continue-on-error: false
working-directory: ${{github.workspace}}/3rdParty/gc/release/
shell: sh
run: ls -l
- name: Configure
continue-on-error: false
working-directory: ${{github.workspace}}/__build/tslang/ninja/release
shell: sh
run: cmake ../../../../tslang -G "Ninja" -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -Wno-dev
- name: Build
continue-on-error: false
working-directory: ${{github.workspace}}/__build/tslang/ninja/release
shell: sh
run: cmake --build . --config ${{ env.BUILD_TYPE }} -j 8
- name: Test
continue-on-error: false
working-directory: ${{github.workspace}}/__build/tslang/ninja/release
shell: sh
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -j8 -C ${{ env.BUILD_TYPE }} -T test --output-on-failure -T test --output-on-failure
env:
LLVM_SYMBOLIZER_PATH: ${{github.workspace}}/3rdParty/llvm/release/bin