forked from libre-chip/fayalite
		
	
		
			
				
	
	
		
			126 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # SPDX-License-Identifier: LGPL-3.0-or-later
 | |
| # See Notices.txt for copyright information
 | |
| on:
 | |
|   workflow_call:
 | |
|     outputs:
 | |
|       cache-primary-key:
 | |
|         value: ${{ jobs.deps.outputs.cache-primary-key }}
 | |
| 
 | |
| jobs:
 | |
|   deps:
 | |
|     runs-on: debian-12
 | |
|     outputs:
 | |
|       cache-primary-key: ${{ steps.restore-deps.outputs.cache-primary-key }}
 | |
|     steps:
 | |
|       - uses: actions/checkout@v3
 | |
|         with:
 | |
|           fetch-depth: 0
 | |
|       - uses: actions/cache/restore@v3
 | |
|         id: restore-deps
 | |
|         with:
 | |
|           path: deps
 | |
|           key: ${{ github.repository }}-deps-${{ runner.os }}-${{ hashFiles('.forgejo/workflows/deps.yml') }}
 | |
|           lookup-only: true
 | |
|       - name: Install Apt packages
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           apt-get update -qq
 | |
|           apt-get install -qq \
 | |
|             bison \
 | |
|             build-essential \
 | |
|             ccache \
 | |
|             clang \
 | |
|             cmake \
 | |
|             cvc5 \
 | |
|             default-jre-headless \
 | |
|             flex \
 | |
|             g++ \
 | |
|             gawk \
 | |
|             git \
 | |
|             libantlr4-runtime-dev \
 | |
|             libboost-filesystem-dev \
 | |
|             libboost-iostreams-dev \
 | |
|             libboost-program-options-dev \
 | |
|             libboost-python-dev \
 | |
|             libboost-system-dev \
 | |
|             libboost-thread-dev \
 | |
|             libeigen3-dev \
 | |
|             libffi-dev \
 | |
|             libreadline-dev \
 | |
|             lld \
 | |
|             openfpgaloader \
 | |
|             pkg-config \
 | |
|             python3 \
 | |
|             python3-click \
 | |
|             python3-venv \
 | |
|             tcl-dev \
 | |
|             uuid-dev \
 | |
|             zlib1g-dev
 | |
|       - name: Create venv
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           python3 -m venv deps/venv
 | |
|           source deps/venv/bin/activate
 | |
|           echo "VIRTUAL_ENV=$VIRTUAL_ENV" >> "$FORGEJO_ENV"
 | |
|           echo "$VIRTUAL_ENV/bin" >> "$FORGEJO_PATH"
 | |
|       - name: Build prjxray
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           git clone https://github.com/SymbiFlow/prjxray.git deps/prjxray
 | |
|           (cd deps/prjxray; git checkout c9f02d8576042325425824647ab5555b1bc77833)
 | |
|           (cd deps/prjxray; git submodule update --init --recursive)
 | |
|           mkdir -p deps/prjxray/build
 | |
|           (cd deps/prjxray/build; cmake ..)
 | |
|           (cd deps/prjxray/build; make -j$(nproc))
 | |
|           (cd deps/prjxray/build; make install)
 | |
|           (cd deps/prjxray; pip install -r requirements.txt)
 | |
|       - name: Get prjxray-db
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           git clone https://github.com/openXC7/prjxray-db.git deps/prjxray-db
 | |
|           (cd deps/prjxray-db; git checkout 381966a746cb4cf4a7f854f0e53caa3bf74fbe62)
 | |
|       - name: Build xcfasm
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           git clone https://github.com/chipsalliance/f4pga-xc-fasm.git deps/f4pga-xc-fasm
 | |
|           (cd deps/f4pga-xc-fasm; git checkout 25dc605c9c0896204f0c3425b52a332034cf5e5c)
 | |
|           (cd deps/f4pga-xc-fasm; pip install -e .)
 | |
|       - name: Build nextpnr-xilinx
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           git clone https://github.com/openXC7/nextpnr-xilinx.git deps/nextpnr-xilinx
 | |
|           (cd deps/nextpnr-xilinx; git checkout 724db28b41e68568690a5ea1dd9ce5082362bb91)
 | |
|           (cd deps/nextpnr-xilinx; git submodule update --init --recursive)
 | |
|           mkdir -p deps/nextpnr-xilinx/build
 | |
|           (cd deps/nextpnr-xilinx/build; cmake -DARCH=xilinx -DUSE_OPENMP=ON -DBUILD_GUI=OFF ..)
 | |
|           (cd deps/nextpnr-xilinx/build; make -j$(nproc))
 | |
|           (cd deps/nextpnr-xilinx/build; make install)
 | |
|       - name: Install Firtool
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           mkdir -p deps
 | |
|           wget -O deps/firrtl.tar.gz https://github.com/llvm/circt/releases/download/firtool-1.86.0/firrtl-bin-linux-x64.tar.gz
 | |
|           sha256sum -c - <<<'bf6f4ab18ae76f135c944efbd81e25391c31c1bd0617c58ab0592640abefee14  deps/firrtl.tar.gz'
 | |
|           tar -C deps -xvaf deps/firrtl.tar.gz
 | |
|           rm -rf deps/firtool
 | |
|           mv deps/firtool-1.86.0 deps/firtool
 | |
|       - name: Get SymbiYosys
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           git clone --depth=1 --branch=yosys-0.45 https://git.libre-chip.org/mirrors/sby deps/sby
 | |
|       - name: Build Z3
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           git clone --depth=1 --recursive --branch=z3-4.13.3 https://git.libre-chip.org/mirrors/z3 deps/z3
 | |
|           (cd deps/z3; PYTHON=python3 ./configure --prefix=/usr/local)
 | |
|           make -C deps/z3/build -j"$(nproc)"
 | |
|       - name: Build Yosys
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           git clone --depth=1 --recursive --branch=0.45 https://git.libre-chip.org/mirrors/yosys deps/yosys
 | |
|           make -C deps/yosys -j"$(nproc)"
 | |
|       - uses: actions/cache/save@v3
 | |
|         if: steps.restore-deps.outputs.cache-hit != 'true'
 | |
|         with:
 | |
|           path: deps
 | |
|           key: ${{ steps.restore-deps.outputs.cache-primary-key }}
 |