# This file was generated with the assistance of an AI coding tool. name: ci-ifcwrap-standalone on: workflow_dispatch: pull_request: paths: &ci_paths - ".github/workflows/ci-ifcwrap-standalone.yml" - "cmake/**" - "src/ifcwrap/**" - "src/ifcparse/**" - "src/ifcgeom/**" - "src/serializers/**" - "src/ifcconvert/**" - "src/ifcopenshell-python/**" - "src/svgfill/**" push: paths: *ci_paths env: IFCOPENSHELL_PREFIX: ${{ github.workspace }}/ifcopenshell-install jobs: build-ifcopenshell: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v7 with: submodules: recursive - name: Install C++ dependencies run: | sudo apt update sudo apt-get install --no-install-recommends -y \ cmake \ bison \ gcc \ g++ \ libboost-date-time-dev \ libboost-filesystem-dev \ libboost-iostreams-dev \ libboost-program-options-dev \ libboost-regex-dev \ libboost-system-dev \ libboost-thread-dev \ libeigen3-dev \ libocct-data-exchange-dev \ libocct-draw-dev \ libocct-foundation-dev \ libocct-modeling-algorithms-dev \ libocct-modeling-data-dev \ libocct-ocaf-dev \ libocct-visualization-dev \ libpcre3-dev \ libpcre2-dev \ libtbb-dev \ libxml2-dev \ libxi-dev \ occt-misc \ tcl-dev \ tk-dev - name: ccache uses: hendrikmuhs/ccache-action@v1.2.24 with: key: ci-ifcwrap-standalone-ubuntu-22.04-${{ runner.arch }} - name: Build SWIG # IfcOpenShell requires SWIG 4.1+, ubuntu-22.04 ships 4.0.2. run: | sudo apt-get remove --purge -y swig swig4.0 git clone https://github.com/swig/swig --branch v4.2.1 --depth 1 cmake -S swig -B swig/build -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache cmake --build swig/build -j "$(nproc)" sudo cmake --install swig/build swig -version - name: Configure minimal IfcOpenShell run: | cmake -S cmake -B build-ifcopenshell \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX="${IFCOPENSHELL_PREFIX}" \ -DCMAKE_PREFIX_PATH=/usr \ -DCMAKE_SYSTEM_PREFIX_PATH=/usr \ -DMINIMAL_BUILD=ON \ -DBUILD_IFCPYTHON=OFF \ -DUSE_CCACHE=ON \ "-DSCHEMA_VERSIONS=4x3_add2" - name: Build and install minimal IfcOpenShell run: | cmake --build build-ifcopenshell --target install -j "$(nproc)" - name: Build and install standalone IfcPython for Python 3.11 uses: ./.github/actions/build-ifcwrap-python with: python-version: "3.11" ifcopenshell-prefix: ${{ env.IFCOPENSHELL_PREFIX }} - name: Build and install standalone IfcPython for Python 3.12 uses: ./.github/actions/build-ifcwrap-python with: python-version: "3.12" ifcopenshell-prefix: ${{ env.IFCOPENSHELL_PREFIX }}