[FIRRTL] Allow local targets to be multiply-instantiated. (#7613) #23
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Short integration tests | |
# Run the integration tests on one configuration (of the nightly matrix) on each | |
# push to main. Should catch 95% of integration test breakages. Useful for | |
# identifying the particular offending commit and emailing the commit author. | |
# Note: currently the integration tests don't take that long to run (<1 min). | |
# If, in the future, they take significantly longer (>~1 hour), we should | |
# reconsider this. | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
pull_request: | |
types: [opened, synchronize, reopened] | |
jobs: | |
# Build CIRCT and run its tests using a Docker container with all the | |
# integration testing prerequisite installed. | |
build-circt: | |
name: Build and Test | |
# Run on an internal MSFT subscription. Please DO NOT use this for any other | |
# workflows without talking to John Demme (john.demme@microsoft.com, GH | |
# teqdruid) first. We may lose funding for this if it ends up costing too | |
# much. | |
# If individual jobs fail due to timeouts or disconnects, please report to | |
# John and re-run the job. | |
runs-on: ["self-hosted", "1ES.Pool=1ES-CIRCT-builds", "linux"] | |
container: | |
image: ghcr.io/circt/images/circt-integration-test:v13.1 | |
volumes: | |
- /mnt:/__w/circt | |
strategy: | |
# Keep the 'matrix' strategy with one data point to make it obvious that | |
# this is one point in the overall matrix. | |
matrix: | |
build-assert: [ON] | |
build-shared: [ON] | |
build-type: [Release] | |
compiler: | |
- cc: clang | |
cxx: clang++ | |
steps: | |
# Clone the CIRCT repo and its submodules. Do shallow clone to save clone | |
# time. | |
- name: Get CIRCT | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
submodules: true | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2 | |
with: | |
key: short-${{ matrix.compiler.cc }}-${{ matrix.build-type }}-${{ matrix.build-shared }}-${{ matrix.build-assert }} | |
max-size: 500M | |
# -------- | |
# Build and test CIRCT | |
# -------- | |
- name: Configure CIRCT | |
env: | |
CC: ${{ matrix.compiler.cc }} | |
CXX: ${{ matrix.compiler.cxx }} | |
BUILD_ASSERT: ${{ matrix.build-assert }} | |
BUILD_SHARED: ${{ matrix.build-shared }} | |
BUILD_TYPE: ${{ matrix.build-type }} | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
mkdir build && cd build | |
# In order for ccache to be effective, these flags should be kept in sync with nighly. | |
cmake -GNinja ../llvm/llvm \ | |
-DBUILD_SHARED_LIBS=$BUILD_SHARED \ | |
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \ | |
-DCMAKE_C_COMPILER=$CC \ | |
-DCMAKE_CXX_COMPILER=$CXX \ | |
-DLLVM_CCACHE_BUILD=ON \ | |
-DLLVM_ENABLE_ASSERTIONS=$BUILD_ASSERT \ | |
-DLLVM_ENABLE_PROJECTS=mlir \ | |
-DLLVM_EXTERNAL_PROJECTS=circt \ | |
-DLLVM_EXTERNAL_CIRCT_SOURCE_DIR=.. \ | |
-DLLVM_TARGETS_TO_BUILD="host" \ | |
-DLLVM_USE_LINKER=lld \ | |
-DLLVM_USE_SPLIT_DWARF=ON \ | |
-DMLIR_ENABLE_BINDINGS_PYTHON=ON \ | |
-DCIRCT_BINDINGS_PYTHON_ENABLED=ON \ | |
-DLLVM_LIT_ARGS="-v --show-unsupported" \ | |
-DCIRCT_SLANG_FRONTEND_ENABLED=ON | |
# Temporarily disable ESI runtime builds until we work out the Abseil conflict (#7236). | |
# -DESI_RUNTIME=ON | |
- name: Test CIRCT | |
run: | | |
ninja -C build check-circt circt-capi -j$(nproc) | |
- name: Unit Test CIRCT | |
run: | | |
ninja -C build check-circt-unit -j$(nproc) | |
- name: Integration Test CIRCT | |
run: | | |
ninja -C build check-circt-integration -j$(nproc) |