Development happens here #201
Workflow file for this run
This file contains hidden or 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: build-emscripten | |
| on: | |
| push: | |
| branches: [ "master" ] | |
| pull_request: | |
| branches: [ "*" ] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Setup emsdk | |
| uses: mymindstorm/setup-emsdk@v14 | |
| with: | |
| emscripten-version: latest | |
| - name: Set EMINSTALL | |
| run: | | |
| EMINSTALL=$(em-config CACHE)/sysroot | |
| echo "EMINSTALL=$EMINSTALL" >> $GITHUB_ENV | |
| - name: Install build dependencies | |
| run: sudo apt-get update && sudo apt-get install -yq wget ccache | |
| - name: Setup ccache | |
| uses: hendrikmuhs/ccache-action@v1.2 | |
| with: | |
| key: emscripten | |
| max-size: 500M | |
| - name: Build GMP for wasm | |
| run: | | |
| wget https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz | |
| tar xf gmp-6.3.0.tar.xz | |
| cd gmp-6.3.0 | |
| emconfigure ./configure --disable-assembly --host wasm32 --enable-cxx --prefix=$EMINSTALL CFLAGS="-fPIC" CXXFLAGS="-fPIC" | |
| emmake make -j$(nproc) | |
| emmake make install | |
| cp $EMINSTALL/lib/lib*.a $EMINSTALL/lib/wasm32-emscripten/ 2>/dev/null || true | |
| cd .. | |
| - name: Build MPFR for wasm | |
| run: | | |
| wget https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.1.tar.xz | |
| tar xf mpfr-4.2.1.tar.xz | |
| cd mpfr-4.2.1 | |
| emconfigure ./configure --host wasm32 --with-gmp=$EMINSTALL --prefix=$EMINSTALL CFLAGS="-fPIC" CXXFLAGS="-fPIC" | |
| emmake make -j$(nproc) | |
| emmake make install | |
| cp $EMINSTALL/lib/lib*.a $EMINSTALL/lib/wasm32-emscripten/ 2>/dev/null || true | |
| cd .. | |
| - name: Build FLINT for wasm | |
| run: | | |
| wget https://github.com/flintlib/flint/releases/download/v3.4.0/flint-3.4.0.tar.gz | |
| tar xzf flint-3.4.0.tar.gz | |
| cd flint-3.4.0 | |
| sed -i 's/#if (defined(__unix__) && !defined(__CYGWIN__)) || defined(__APPLE__)/#if (defined(__unix__) \&\& !defined(__CYGWIN__) \&\& !defined(__EMSCRIPTEN__)) || defined(__APPLE__)/' src/profiler.h | |
| emconfigure ./configure \ | |
| --disable-assembly \ | |
| --with-mpfr=$EMINSTALL \ | |
| --with-gmp=$EMINSTALL \ | |
| --prefix=$EMINSTALL \ | |
| --host wasm32 \ | |
| CFLAGS="-fPIC" CXXFLAGS="-fPIC" | |
| emmake make -j$(nproc) | |
| emmake make install | |
| cp $EMINSTALL/lib/lib*.a $EMINSTALL/lib/wasm32-emscripten/ 2>/dev/null || true | |
| cd .. | |
| - name: Checkout Cadical | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: meelgroup/cadical | |
| ref: master | |
| path: cadical | |
| - name: Build Cadical for wasm | |
| run: | | |
| cd cadical | |
| mkdir build && cd build | |
| emcmake cmake \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_SHARED_LIBS=OFF \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_INSTALL_PREFIX=$EMINSTALL \ | |
| .. | |
| emmake make -j$(nproc) | |
| emmake make install | |
| cp $EMINSTALL/lib/lib*.a $EMINSTALL/lib/wasm32-emscripten/ 2>/dev/null || true | |
| cd ../.. | |
| - name: Checkout Cadiback | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: meelgroup/cadiback | |
| ref: main | |
| path: cadiback | |
| - name: Build Cadiback for wasm | |
| run: | | |
| cd cadiback | |
| mkdir build && cd build | |
| emcmake cmake \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_SHARED_LIBS=OFF \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_INSTALL_PREFIX=$EMINSTALL \ | |
| -Dcadical_DIR=$GITHUB_WORKSPACE/cadical/build \ | |
| .. | |
| emmake make -j$(nproc) | |
| emmake make install | |
| cp $EMINSTALL/lib/lib*.a $EMINSTALL/lib/wasm32-emscripten/ 2>/dev/null || true | |
| cd ../.. | |
| - name: Checkout CryptoMiniSat | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: msoos/cryptominisat | |
| ref: master | |
| path: cryptominisat | |
| submodules: 'true' | |
| - name: Build CryptoMiniSat for wasm | |
| run: | | |
| cd cryptominisat | |
| mkdir build && cd build | |
| emcmake cmake \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_SHARED_LIBS=OFF \ | |
| -DENABLE_TESTING=OFF \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_INSTALL_PREFIX=$EMINSTALL \ | |
| -Dcadical_DIR=$GITHUB_WORKSPACE/cadical/build \ | |
| -Dcadiback_DIR=$GITHUB_WORKSPACE/cadiback/build \ | |
| .. | |
| emmake make -j$(nproc) | |
| emmake make install | |
| cp $EMINSTALL/lib/lib*.a $EMINSTALL/lib/wasm32-emscripten/ 2>/dev/null || true | |
| cd ../.. | |
| - name: Checkout treedecomp | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: meelgroup/treedecomp | |
| ref: main | |
| path: treedecomp | |
| - name: Build treedecomp for wasm | |
| run: | | |
| cd treedecomp | |
| mkdir build && cd build | |
| emcmake cmake \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_SHARED_LIBS=OFF \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_INSTALL_PREFIX=$EMINSTALL \ | |
| .. | |
| emmake make -j$(nproc) | |
| emmake make install | |
| cp $EMINSTALL/lib/lib*.a $EMINSTALL/lib/wasm32-emscripten/ 2>/dev/null || true | |
| cd ../.. | |
| - name: Checkout SBVA | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: meelgroup/SBVA | |
| ref: master | |
| path: sbva | |
| - name: Build SBVA | |
| run: | | |
| cd sbva | |
| mkdir build | |
| cd build | |
| emcmake cmake \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_SHARED_LIBS=OFF \ | |
| -DENABLE_TESTING=OFF \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_INSTALL_PREFIX=$EMINSTALL \ | |
| -S .. | |
| emmake make -j$(nproc) | |
| emmake make install | |
| cp $EMINSTALL/lib/lib*.a $EMINSTALL/lib/wasm32-emscripten/ 2>/dev/null || true | |
| cd ../.. | |
| - name: Checkout arjun | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: meelgroup/arjun | |
| ref: master | |
| path: arjun | |
| - name: Build arjun for wasm | |
| run: | | |
| cd arjun | |
| mkdir build && cd build | |
| emcmake cmake \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_SHARED_LIBS=OFF \ | |
| -DENABLE_TESTING=OFF \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_INSTALL_PREFIX=$EMINSTALL \ | |
| -Dcadical_DIR=$GITHUB_WORKSPACE/cadical/build \ | |
| -Dcadiback_DIR=$GITHUB_WORKSPACE/cadiback/build \ | |
| -Dcryptominisat5_DIR=$GITHUB_WORKSPACE/cryptominisat/build \ | |
| -Dsbva_DIR=$GITHUB_WORKSPACE/sbva/build \ | |
| -Dtreedecomp_DIR=$GITHUB_WORKSPACE/treedecomp/build \ | |
| -S .. | |
| emmake make -j$(nproc) | |
| emmake make install | |
| cp $EMINSTALL/lib/lib*.a $EMINSTALL/lib/wasm32-emscripten/ 2>/dev/null || true | |
| cd ../.. | |
| - name: Checkout approxmc | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: meelgroup/approxmc | |
| ref: master | |
| path: approxmc | |
| submodules: 'true' | |
| - name: Build approxmc for wasm | |
| run: | | |
| cd approxmc | |
| mkdir build && cd build | |
| emcmake cmake \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_SHARED_LIBS=OFF \ | |
| -DENABLE_TESTING=OFF \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_INSTALL_PREFIX=$EMINSTALL \ | |
| -Dcryptominisat5_DIR=$GITHUB_WORKSPACE/cryptominisat/build \ | |
| -Dcadiback_DIR=$GITHUB_WORKSPACE/cadiback/build \ | |
| -Darjun_DIR=$GITHUB_WORKSPACE/arjun/build \ | |
| -S .. | |
| emmake make -j$(nproc) | |
| emmake make install | |
| cp $EMINSTALL/lib/lib*.a $EMINSTALL/lib/wasm32-emscripten/ 2>/dev/null || true | |
| cd ../.. | |
| - name: Checkout ganak | |
| uses: actions/checkout@v4 | |
| with: | |
| path: project | |
| submodules: 'true' | |
| - name: Build ganak for wasm | |
| run: | | |
| cd project | |
| mkdir -p build && cd build | |
| emcmake cmake \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_SHARED_LIBS=OFF \ | |
| -DENABLE_TESTING=OFF \ | |
| -DNOZLIB=ON \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -Dcryptominisat5_DIR=$GITHUB_WORKSPACE/cryptominisat/build \ | |
| -Dcadiback_DIR=$GITHUB_WORKSPACE/cadiback/build \ | |
| -Dtreedecomp_DIR=$GITHUB_WORKSPACE/treedecomp/build \ | |
| -Darjun_DIR=$GITHUB_WORKSPACE/arjun/build \ | |
| -Dapproxmc_DIR=$GITHUB_WORKSPACE/approxmc/build \ | |
| .. | |
| emmake make -j$(nproc) | |
| cd ../.. | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ganak-approxmc-arjun-cryptominisat-wasm-js.zip | |
| path: | | |
| project/build/ganak.js | |
| project/build/ganak.wasm | |
| approxmc/build/approxmc.js | |
| approxmc/build/approxmc.wasm | |
| arjun/build/arjun.js | |
| arjun/build/arjun.wasm | |
| cryptominisat/build/cryptominisat5.js | |
| cryptominisat/build/cryptominisat5.wasm |