-
Notifications
You must be signed in to change notification settings - Fork 2
131 lines (112 loc) · 4.69 KB
/
build-windows.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
name: Build (Windows)
on: [ push, pull_request ]
jobs:
build:
runs-on: windows-latest
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@v2
- name: Setup Java
uses: actions/setup-java@v2
with:
distribution: zulu
java-version: 11
- name: Setup build cache
uses: pat-s/always-upload-cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build project using Gradle
run: ./gradlew build -x test --stacktrace --scan
- name: Build MiniSat
working-directory: jni
run: |
git clone --depth=1 https://github.com/msoos/minisat solvers/minisat-src
cd solvers/minisat-src
cmake -B build -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles"
cmake --build build
cmake --install build --prefix install
- name: Build Glucose
working-directory: 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: 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: jni
run: |
git clone https://github.com/msoos/cryptominisat solvers/cms-src
cd solvers/cms-src
git checkout 02f53d1fc045fdba53671306964d3d094feb949e
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: 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: 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: jni
run: |
make res LIB_PREFIX= LIB_EXT=dll RES_LIB_SUBDIR=win64
- name: Add Cryptominisat to PATH
working-directory: 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: Stop Gradle daemon
run: ./gradlew --stop
- 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: |
jni/build/lib/jminisat.dll
jni/build/lib/jglucose.dll
jni/build/lib/jcadical.dll
jni/build/lib/jcms.dll
jni/solvers/minisat-src/install/bin/libminisat.dll
jni/solvers/glucose-src/install/lib/glucose.dll
jni/solvers/cadical-src/install/lib/cadical.dll
jni/solvers/cms-src/install/bin/libcryptominisat5win.dll