@@ -3,7 +3,7 @@ name: Build Wheels
3
3
on :
4
4
push :
5
5
branches :
6
- - main
6
+ - dot
7
7
tags :
8
8
- " quaddtype-v*"
9
9
paths :
@@ -19,12 +19,44 @@ jobs:
19
19
runs-on : ubuntu-latest
20
20
steps :
21
21
- uses : actions/checkout@v3
22
+ with :
23
+ submodules : recursive
22
24
23
25
- name : Set up Python
24
26
uses : actions/setup-python@v4
25
27
with :
26
28
python-version : " >=3.10.0"
27
29
30
+ - name : Install dependencies
31
+ run : |
32
+ sudo apt-get update
33
+ sudo apt-get install -y cmake build-essential libomp-dev git pkg-config
34
+
35
+ - name : Verify QuadBLAS submodule
36
+ run : |
37
+ ls -la QuadBLAS/
38
+ ls -la QuadBLAS/include/quadblas/
39
+
40
+ - name : Install SLEEF and setup QuadBLAS
41
+ run : |
42
+ # Install SLEEF
43
+ git clone --branch 3.8 --depth 1 https://github.com/shibatch/sleef.git
44
+ cd sleef
45
+ cmake -S . -B build \
46
+ -DSLEEF_BUILD_QUAD:BOOL=ON \
47
+ -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \
48
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON
49
+ cmake --build build/ --clean-first -j
50
+ sudo cmake --install build --prefix /usr/local
51
+ cd ..
52
+
53
+ # Install QuadBLAS headers from submodule (header-only)
54
+ sudo cp -r QuadBLAS/include/quadblas /usr/local/include/
55
+
56
+ # Verify installation
57
+ ls -la /usr/local/include/quadblas/
58
+ ls -la /usr/local/lib/
59
+
28
60
- name : Install cibuildwheel
29
61
run : pip install cibuildwheel==2.20.0
30
62
@@ -34,16 +66,25 @@ jobs:
34
66
CIBW_MANYLINUX_X86_64_IMAGE : manylinux_2_28
35
67
CIBW_BUILD_VERBOSITY : " 3"
36
68
CIBW_BEFORE_ALL : |
37
- git clone --branch 3.8 https://github.com/shibatch/sleef.git
69
+ # Install SLEEF
70
+ git clone --branch 3.8 --depth 1 https://github.com/shibatch/sleef.git
38
71
cd sleef
39
- cmake -S . -B build -DSLEEF_BUILD_QUAD:BOOL=ON -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON
72
+ cmake -S . -B build \
73
+ -DSLEEF_BUILD_QUAD:BOOL=ON \
74
+ -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \
75
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON
40
76
cmake --build build/ --clean-first -j
41
77
cmake --install build --prefix /usr/local
78
+ cd ..
79
+
80
+ # Install QuadBLAS headers from submodule
81
+ cp -r QuadBLAS/include/quadblas /usr/local/include/
42
82
CIBW_ENVIRONMENT : >
43
- CFLAGS="-I/usr/local/include $CFLAGS"
44
- CXXFLAGS="-I/usr/local/include $CXXFLAGS"
45
- LDFLAGS="-L/usr/local/lib64 $LDFLAGS"
46
- LD_LIBRARY_PATH="/usr/local/lib64:$LD_LIBRARY_PATH"
83
+ CFLAGS="-I/usr/local/include -I/usr/local/include/quadblas $CFLAGS"
84
+ CXXFLAGS="-I/usr/local/include -I/usr/local/include/quadblas -std=c++17 $CXXFLAGS"
85
+ LDFLAGS="-L/usr/local/lib64 -Wl,-rpath,/usr/local/lib64 -lsleef -lsleefquad -fopenmp -latomic -lpthread $LDFLAGS"
86
+ LD_LIBRARY_PATH="/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH"
87
+ PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
47
88
CIBW_REPAIR_WHEEL_COMMAND : |
48
89
auditwheel repair -w {dest_dir} --plat manylinux_2_28_x86_64 {wheel}
49
90
CIBW_TEST_COMMAND : |
@@ -68,17 +109,29 @@ jobs:
68
109
69
110
steps :
70
111
- uses : actions/checkout@v3
112
+ with :
113
+ submodules : recursive
71
114
72
115
- name : Set up Python
73
116
uses : actions/setup-python@v4
74
117
with :
75
118
python-version : " 3.10"
76
119
77
- - name : Install SLEEF
120
+ - name : Install dependencies
121
+ run : |
122
+ brew install cmake libomp git
123
+
124
+ - name : Verify QuadBLAS submodule
125
+ run : |
126
+ ls -la QuadBLAS/
127
+ ls -la QuadBLAS/include/quadblas/
128
+
129
+ - name : Install SLEEF and setup QuadBLAS
78
130
env :
79
131
MACOSX_DEPLOYMENT_TARGET : " 11.0"
80
132
run : |
81
- git clone --branch 3.8 https://github.com/shibatch/sleef.git
133
+ # Install SLEEF
134
+ git clone --branch 3.8 --depth 1 https://github.com/shibatch/sleef.git
82
135
cd sleef
83
136
cmake -S . -B build \
84
137
-DSLEEF_BUILD_QUAD:BOOL=ON \
@@ -89,6 +142,11 @@ jobs:
89
142
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
90
143
cmake --build build/ --clean-first -j
91
144
sudo cmake --install build --prefix /usr/local
145
+ cd ..
146
+
147
+ # Install QuadBLAS headers from submodule
148
+ sudo cp -r QuadBLAS/include/quadblas /usr/local/include/
149
+
92
150
- name : Install cibuildwheel
93
151
run : pip install cibuildwheel==2.20.0
94
152
@@ -97,12 +155,30 @@ jobs:
97
155
CIBW_BUILD : " cp310-* cp311-* cp312-*"
98
156
CIBW_ARCHS_MACOS : ${{ matrix.os == 'macos-13' && 'x86_64' || 'arm64' }}
99
157
CIBW_BUILD_VERBOSITY : " 1"
158
+ CIBW_BEFORE_ALL : |
159
+ # Install SLEEF
160
+ git clone --branch 3.8 --depth 1 https://github.com/shibatch/sleef.git
161
+ cd sleef
162
+ cmake -S . -B build \
163
+ -DSLEEF_BUILD_QUAD:BOOL=ON \
164
+ -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \
165
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
166
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
167
+ -DCMAKE_INSTALL_RPATH="@loader_path/../lib" \
168
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
169
+ cmake --build build/ --clean-first -j
170
+ cmake --install build --prefix /usr/local
171
+ cd ..
172
+
173
+ # Install QuadBLAS headers from submodule
174
+ cp -r QuadBLAS/include/quadblas /usr/local/include/
100
175
CIBW_ENVIRONMENT : >
101
176
MACOSX_DEPLOYMENT_TARGET="11.0"
102
177
DYLD_LIBRARY_PATH="/usr/local/lib:$DYLD_LIBRARY_PATH"
103
- CFLAGS="-I/usr/local/include $CFLAGS"
104
- CXXFLAGS="-I/usr/local/include $CXXFLAGS"
105
- LDFLAGS="-L/usr/local/lib $LDFLAGS"
178
+ CFLAGS="-I/usr/local/include -I/usr/local/include/quadblas $CFLAGS"
179
+ CXXFLAGS="-I/usr/local/include -I/usr/local/include/quadblas -std=c++17 $CXXFLAGS"
180
+ LDFLAGS="-L/usr/local/lib -lsleef -lsleefquad $LDFLAGS"
181
+ PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
106
182
CIBW_REPAIR_WHEEL_COMMAND : >
107
183
delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}
108
184
CIBW_TEST_COMMAND : |
@@ -127,6 +203,8 @@ jobs:
127
203
128
204
steps :
129
205
- uses : actions/checkout@v3
206
+ with :
207
+ submodules : recursive
130
208
131
209
- name : Setup MSVC
132
210
uses : ilammy/msvc-dev-cmd@v1
@@ -142,19 +220,31 @@ jobs:
142
220
- name : Install CMake
143
221
uses : lukka/get-cmake@latest
144
222
223
+ - name : Verify QuadBLAS submodule
224
+ shell : pwsh
225
+ run : |
226
+ Get-ChildItem QuadBLAS/
227
+ Get-ChildItem QuadBLAS/include/quadblas/
228
+
145
229
- name : Clone and Build SLEEF
146
230
shell : pwsh
147
231
run : |
148
- git clone --branch 3.8 https://github.com/shibatch/sleef.git
232
+ git clone --branch 3.8 --depth 1 https://github.com/shibatch/sleef.git
149
233
cd sleef
150
234
cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture == 'x86' && 'Win32' || 'x64' }} -DSLEEF_BUILD_QUAD:BOOL=ON -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON
151
235
cmake --build build --config Release
152
236
cmake --install build --prefix "C:/sleef" --config Release
153
237
238
+ - name : Install QuadBLAS headers from submodule
239
+ shell : pwsh
240
+ run : |
241
+ New-Item -ItemType Directory -Force -Path "C:/quadblas/include"
242
+ Copy-Item -Recurse -Force "QuadBLAS/include/quadblas" "C:/quadblas/include/"
243
+
154
244
- name : Setup build environment
155
245
shell : pwsh
156
246
run : |
157
- $env:INCLUDE += ";C:\sleef\include"
247
+ $env:INCLUDE += ";C:\sleef\include;C:\quadblas\include "
158
248
$env:LIB += ";C:\sleef\lib"
159
249
$env:PATH = "C:\sleef\bin;$env:PATH"
160
250
echo "INCLUDE=$env:INCLUDE" >> $env:GITHUB_ENV
@@ -175,8 +265,24 @@ jobs:
175
265
CIBW_BUILD_VERBOSITY : " 3"
176
266
DISTUTILS_USE_SDK : " 1"
177
267
MSSdk : " 1"
268
+ CIBW_BEFORE_ALL : |
269
+ git clone --branch 3.8 --depth 1 https://github.com/shibatch/sleef.git
270
+ cd sleef
271
+ cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture == 'x86' && 'Win32' || 'x64' }} -DSLEEF_BUILD_QUAD:BOOL=ON -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON
272
+ cmake --build build --config Release
273
+ cmake --install build --prefix "C:/sleef" --config Release
274
+ cd ..
275
+ mkdir -p C:/quadblas/include
276
+ cp -r QuadBLAS/include/quadblas C:/quadblas/include/
178
277
CIBW_BEFORE_BUILD : |
179
278
pip install meson meson-python ninja numpy
279
+ CIBW_ENVIRONMENT : >
280
+ INCLUDE="C:/sleef/include;C:/quadblas/include;$INCLUDE"
281
+ LIB="C:/sleef/lib;$LIB"
282
+ PATH="C:/sleef/bin;$PATH"
283
+ CFLAGS="/IC:/sleef/include /IC:/quadblas/include $CFLAGS"
284
+ CXXFLAGS="/IC:/sleef/include /IC:/quadblas/include /std:c++17 $CXXFLAGS"
285
+ LDFLAGS="C:/sleef/lib/sleef.lib C:/sleef/lib/sleefquad.lib $LDFLAGS"
180
286
CIBW_REPAIR_WHEEL_COMMAND : ' delvewheel repair -w {dest_dir} {wheel} --add-path C:\sleef\bin'
181
287
CIBW_TEST_COMMAND : |
182
288
pip install {package}[test]
@@ -216,39 +322,4 @@ jobs:
216
322
- name : Publish to PyPI
217
323
uses : pypa/gh-action-pypi-publish@release/v1
218
324
with :
219
- packages-dir : dist/*
220
-
221
- # With the current setup, we are not creating a release on GitHub.
222
- # create_release:
223
- # name: Create Release
224
- # needs: [build_wheels_linux, build_wheels_macos, build_wheels_windows]
225
- # runs-on: ubuntu-latest
226
- # if: startsWith(github.ref, 'refs/tags/quaddtype-v')
227
-
228
- # steps:
229
- # - name: Checkout code
230
- # uses: actions/checkout@v2
231
-
232
- # - name: Download all workflow run artifacts
233
- # uses: actions/download-artifact@v4
234
- # with:
235
- # path: artifacts
236
-
237
- # - name: Create Release
238
- # id: create_release
239
- # uses: actions/create-release@v1
240
- # env:
241
- # GITHUB_TOKEN: ${{ secrets.QUADDTYPE_GITHUB_TOKEN }}
242
- # with:
243
- # tag_name: ${{ github.ref }}
244
- # release_name: Release ${{ github.ref }}
245
- # draft: false
246
- # prerelease: false
247
-
248
- # - name: Upload Release Assets
249
- # uses: softprops/action-gh-release@v1
250
- # if: startsWith(github.ref, 'refs/tags/')
251
- # with:
252
- # files: ./artifacts/**/*.whl
253
- # env:
254
- # GITHUB_TOKEN: ${{ secrets.QUADDTYPE_GITHUB_TOKEN }}
325
+ packages-dir : dist/*
0 commit comments