Use Lipen/minisat fork #12
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: CI | |
on: push | |
jobs: | |
build-linux: | |
name: Build on Linux | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Checkout latest code | |
uses: actions/checkout@v4 | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: zulu | |
java-version: 11 | |
- name: Set up Gradle | |
uses: gradle/gradle-build-action@v2 | |
- name: Build project using Gradle | |
run: ./gradlew build -x test --stacktrace --scan | |
- name: Build MiniSat | |
working-directory: kotlin-satlib-jni | |
run: | | |
git clone --depth=1 https://github.com/Lipen/minisat solvers/minisat-src | |
cd solvers/minisat-src | |
meson setup builddir --buildtype release --strip | |
meson compile -C builddir | |
meson install -C builddir --destdir ../install | |
- name: Build Glucose | |
working-directory: kotlin-satlib-jni | |
run: | | |
git clone --depth=1 https://github.com/wadoon/glucose solvers/glucose-src | |
cd solvers/glucose-src | |
git apply -v ../../patches/glucose-install.patch | |
cmake -B build -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release | |
cmake --build build -- -j8 | |
cmake --install build --prefix install | |
strip -s install/lib/libglucose.so | |
- name: Build Cadical | |
working-directory: kotlin-satlib-jni | |
run: | | |
git clone --depth=1 https://github.com/arminbiere/cadical solvers/cadical-src | |
cd solvers/cadical-src | |
git apply -v ../../patches/cadical-shared.patch | |
patch -p0 < ../../patches/cadical-stats.patch | |
./configure -fPIC | |
make -j8 shared | |
install -m 644 src/cadical.hpp -Dt install/include/cadical | |
install -m 644 build/libcadical.so -Dt install/lib | |
strip -s install/lib/libcadical.so | |
- name: Build CryptoMiniSat | |
working-directory: kotlin-satlib-jni | |
run: | | |
git clone --depth=1 https://github.com/msoos/cryptominisat solvers/cms-src | |
cd solvers/cms-src | |
cmake -B build -DENABLE_PYTHON_INTERFACE=OFF -DCMAKE_BUILD_TYPE=Release | |
cmake --build build -- -j8 | |
cmake --install build --prefix install | |
strip -s install/lib/libcryptominisat5.so | |
- name: Fixup libs | |
working-directory: kotlin-satlib-jni | |
run: | | |
ls -al --group-directories-first solvers/*-src/install/lib | |
cp --remove-destination $(readlink -f solvers/minisat-src/install/lib/libminisat.so) solvers/minisat-src/install/lib/libminisat.so | |
cp --remove-destination $(readlink -f solvers/cms-src/install/lib/libcryptominisat5.so) solvers/cms-src/install/lib/libcryptominisat5.so | |
- name: Set up ld cache | |
working-directory: kotlin-satlib-jni | |
run: sudo ldconfig $(realpath solvers/*-src/install/lib) | |
- name: Build JNI libs | |
working-directory: kotlin-satlib-jni | |
run: make libs \ | |
MINISAT_INSTALL_DIR=solvers/minisat-src/install \ | |
GLUCOSE_INSTALL_DIR=solvers/glucose-src/install \ | |
CADICAL_INSTALL_DIR=solvers/cadical-src/install \ | |
CMS_INSTALL_DIR=solvers/cms-src/install | |
- name: Copy JNI libs to resources folder | |
working-directory: kotlin-satlib-jni | |
run: make res | |
- name: Add Cryptominisat to PATH | |
working-directory: kotlin-satlib-jni | |
run: | | |
cp solvers/cms-src/install/bin/cryptominisat5_simple solvers/cms-src/install/bin/cryptominisat5 | |
echo "$(realpath solvers/cms-src/install/bin)" >> $GITHUB_PATH | |
- name: Run tests | |
run: ./gradlew cleanTest test --no-build-cache --stacktrace | |
- name: Upload to GH Releases | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
files: | | |
kotlin-satlib-jni/build/lib/libjminisat.so | |
kotlin-satlib-jni/build/lib/libjglucose.so | |
kotlin-satlib-jni/build/lib/libjcadical.so | |
kotlin-satlib-jni/build/lib/libjcms.so | |
kotlin-satlib-jni/solvers/minisat-src/install/lib/libminisat.so | |
kotlin-satlib-jni/solvers/glucose-src/install/lib/libglucose.so | |
kotlin-satlib-jni/solvers/cadical-src/install/lib/libcadical.so | |
kotlin-satlib-jni/solvers/cms-src/install/lib/libcryptominisat5.so | |
build-windows: | |
name: Build on Windows | |
runs-on: windows-2019 | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout latest code | |
uses: actions/checkout@v4 | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: zulu | |
java-version: 11 | |
- name: Set up Gradle | |
uses: gradle/gradle-build-action@v2 | |
- name: Build project using Gradle | |
run: ./gradlew build -x test --stacktrace --scan | |
- name: Build MiniSat | |
working-directory: kotlin-satlib-jni | |
run: | | |
git clone --depth=1 https://github.com/Lipen/minisat solvers/minisat-src | |
cd solvers/minisat-src | |
meson setup builddir --buildtype release --strip | |
meson compile -C builddir | |
meson install -C builddir --destdir ../install | |
- name: Build Glucose | |
working-directory: kotlin-satlib-jni | |
run: | | |
git clone --depth=1 https://github.com/wadoon/glucose solvers/glucose-src | |
cd solvers/glucose-src | |
git apply -v ../../patches/glucose-install.patch | |
git apply -v ../../patches/glucose-mingw-lib-prefix.patch | |
git apply -v ../../patches/glucose-mingw-sys-time.patch | |
cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -G "MinGW Makefiles" | |
cmake --build build --target glucose | |
cmake --install build --prefix install | |
- name: Build Cadical | |
working-directory: kotlin-satlib-jni | |
run: | | |
git clone --depth=1 https://github.com/arminbiere/cadical solvers/cadical-src | |
cd solvers/cadical-src | |
git apply -v ../../patches/cadical-shared.patch | |
patch -p0 < ../../patches/cadical-stats.patch | |
./configure -fPIC | |
make -j8 dll 2>&1 | |
install src/cadical.hpp -Dt install/include/cadical | |
install build/cadical.dll -Dt install/lib | |
- name: Build CryptoMiniSat | |
working-directory: kotlin-satlib-jni | |
run: | | |
git clone --depth=1 https://github.com/msoos/cryptominisat solvers/cms-src | |
cd solvers/cms-src | |
cmake -B build -DENABLE_PYTHON_INTERFACE=OFF -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles" | |
cmake --build build -- -j8 | |
cmake --install build --prefix install | |
- name: Copy solver libs to C:/Windows | |
working-directory: kotlin-satlib-jni | |
run: | | |
cp solvers/minisat-src/install/bin/libminisat.dll C:/Windows/ | |
cp solvers/glucose-src/install/lib/glucose.dll C:/Windows/ | |
cp solvers/cadical-src/install/lib/cadical.dll C:/Windows/ | |
cp solvers/cms-src/install/bin/libcryptominisat5win.dll C:/Windows/ | |
- name: Build JNI libs | |
working-directory: kotlin-satlib-jni | |
run: | | |
make libs \ | |
LIB_PREFIX= LIB_EXT=dll \ | |
JAVA_INCLUDE_SUBDIR=win32 \ | |
MINISAT_INSTALL_DIR=solvers/minisat-src/install \ | |
JMINISAT_CXXFLAGS="-D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS" \ | |
GLUCOSE_INSTALL_DIR=solvers/glucose-src/install \ | |
CADICAL_INSTALL_DIR=solvers/cadical-src/install \ | |
CMS_INSTALL_DIR=solvers/cms-src/install \ | |
JCMS_LDLIBS=-lcryptominisat5win | |
- name: Copy JNI libs to resources folder | |
working-directory: kotlin-satlib-jni | |
run: | | |
make res LIB_PREFIX= LIB_EXT=dll RES_LIB_SUBDIR=win64 | |
- name: Add Cryptominisat to PATH | |
working-directory: kotlin-satlib-jni | |
run: | | |
cp solvers/cms-src/install/bin/cryptominisat5_simple.exe solvers/cms-src/install/bin/cryptominisat5.exe | |
echo "$(realpath solvers/cms-src/install/bin)" >> $GITHUB_PATH | |
- name: Run tests | |
run: ./gradlew cleanTest test --no-build-cache --stacktrace | |
- name: Upload to GH Releases | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
files: | | |
kotlin-satlib-jni/build/lib/jminisat.dll | |
kotlin-satlib-jni/build/lib/jglucose.dll | |
kotlin-satlib-jni/build/lib/jcadical.dll | |
kotlin-satlib-jni/build/lib/jcms.dll | |
kotlin-satlib-jni/solvers/minisat-src/install/bin/libminisat.dll | |
kotlin-satlib-jni/solvers/glucose-src/install/lib/glucose.dll | |
kotlin-satlib-jni/solvers/cadical-src/install/lib/cadical.dll | |
kotlin-satlib-jni/solvers/cms-src/install/bin/libcryptominisat5win.dll |