Skip to content

Commit 50cbe7c

Browse files
Adding windows support through conan
1 parent 5a8d2fd commit 50cbe7c

File tree

1 file changed

+52
-78
lines changed

1 file changed

+52
-78
lines changed

.github/workflows/cd.yml

Lines changed: 52 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ jobs:
4545
strategy:
4646
fail-fast: false
4747
matrix:
48-
# platform: [macos-13, windows-latest, ubuntu-latest, macos-14]
49-
platform: [macos-13, ubuntu-latest, macos-14]
48+
platform: [macos-13, windows-latest, ubuntu-latest, macos-14]
5049

5150
runs-on: ${{ matrix.platform }}
5251

@@ -58,6 +57,25 @@ jobs:
5857
with:
5958
python-version: '3.10'
6059

60+
- name: Install Windows Dependencies (Part 0 - Setup LLVM-style)
61+
if: matrix.platform == 'windows-latest'
62+
uses: llvm/actions/setup-windows@main
63+
with:
64+
arch: amd64
65+
66+
- name: Install Windows Dependencies (Part 1 - Configure Conan)
67+
if: matrix.platform == 'windows-latest'
68+
shell: powershell
69+
run: |
70+
choco install conan -y
71+
$conanDir = "C:\Program Files\Conan\conan"
72+
$env:PATH = "$conanDir;$env:PATH"
73+
$conanDir | Set-Content -Path $env:GITHUB_PATH
74+
$env:CONAN_HOME = "C:\.conan"
75+
"CONAN_HOME=C:\.conan" | Out-File -FilePath $env:GITHUB_ENV -Append
76+
conan --version
77+
conan profile detect --force
78+
6179
- name: Install Intel MacOS dependencies
6280
if: matrix.platform == 'macos-13'
6381
shell: bash
@@ -97,16 +115,12 @@ jobs:
97115
run: |
98116
conan install . --output-folder build --build SundialsSolverStandalone_x64
99117
100-
# - name: Build on Macos
101-
# if: matrix.platform == 'macos-13' || matrix.platform == 'macos-14'
102-
# run: |
103-
# platform=macos
104-
# echo "working dir is $PWD"
105-
#
106-
# cd build
107-
# export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
108-
# cmake -B . -S .. -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Debug
109-
# cmake --build .
118+
- name: Build Windows
119+
if: matrix.platform == 'windows-latest'
120+
run: |
121+
cd build
122+
cmake -B . -S .. -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Debug
123+
cmake --build .
110124
111125
- name: Build Unix
112126
if: matrix.platform == 'ubuntu-latest' || matrix.platform == 'macos-13' || matrix.platform == 'macos-14'
@@ -127,36 +141,6 @@ jobs:
127141
echo "------ running SundialsSolverStandalone_x64 ------"
128142
./bin/SundialsSolverStandalone_x64 || true
129143
130-
# - name: Setup tmate session
131-
# uses: mxschmitt/action-tmate@v3
132-
# with:
133-
# limit-access-to-actor: false
134-
135-
136-
# - name: Install Windows Dependencies
137-
# if: matrix.platform == 'windows-latest'
138-
# uses: msys2/setup-msys2@v2
139-
# with:
140-
# msystem: CLANG64
141-
# update: true
142-
# install: >
143-
# zip
144-
# git
145-
# mingw-w64-clang-x86_64-curl
146-
# mingw-w64-clang-x86_64-toolchain
147-
# mingw-w64-clang-x86_64-flang
148-
# mingw-w64-clang-x86_64-cmake
149-
# mingw-w64-clang-x86_64-boost
150-
# mingw-w64-clang-x86_64-hdf5
151-
# mingw-w64-clang-x86_64-libzip
152-
# mingw-w64-clang-x86_64-netcdf
153-
# mingw-w64-clang-x86_64-zlib
154-
# mingw-w64-clang-x86_64-libaec
155-
156-
# - name: Setup tmate session
157-
# uses: mxschmitt/action-tmate@v3
158-
# with:
159-
# limit-access-to-actor: false
160144
161145
# - name: Build Windows
162146
# if: matrix.platform == 'windows-latest'
@@ -180,22 +164,12 @@ jobs:
180164
#
181165
# ninja -j 1
182166

183-
# - name: Test Windows
184-
# if: matrix.platform == 'windows-latest'
185-
# shell: msys2 {0}
186-
# run: |
187-
# platform=windows
188-
# echo "working dir is $PWD"
189-
#
190-
# cd build
191-
#
192-
# export PATH="/d/a/_temp/msys64/clang64/bin:$PATH"
193-
# pacman -Sy --noconfirm diffutils
194-
#
195-
# ctest -VV
196-
#
197-
# echo "------ running SundialsSolverStandalone_x64 ------"
198-
# ./bin/SundialsSolverStandalone_x64 || true
167+
- name: Test Windows
168+
if: matrix.platform == 'windows-latest'
169+
run: |
170+
cd build
171+
ctest -VV
172+
./bin/SundialsSolverStandalone_x64 || true
199173
200174
201175
- name: fix Macos shared object paths
@@ -213,20 +187,20 @@ jobs:
213187
../../.github/scripts/install_name_tool_macos.sh
214188
tar czvf ../upload/mac64.tgz --dereference .
215189
216-
# - name: handle shared object paths for Windows native build
217-
# if: matrix.platform == 'windows-latest'
218-
# shell: msys2 {0}
219-
# run: |
220-
# mkdir build/upload
221-
# cd build/bin
222-
# rm hello_test TestVCellStoch testzip ziptool || true
223-
# ls *.exe | awk '{print $1}' | xargs -I '{}' ldd '{}' | grep '=> /' | grep -v build | grep -iv windows | awk '{print $3}' | xargs -I '{}' cp -vn '{}' . || true
224-
# ls *.dll | awk '{print $1}' | xargs -I '{}' ldd '{}' | grep '=> /' | grep -v build | grep -iv windows | awk '{print $3}' | xargs -I '{}' cp -vn '{}' . || true
225-
# ls *.dll | awk '{print $1}' | xargs -I '{}' ldd '{}' | grep '=> /' | grep -v build | grep -iv windows | awk '{print $3}' | xargs -I '{}' cp -vn '{}' . || true
226-
# chmod u+w,+x *
227-
# zip ../upload/win64.zip ./*
228-
# cd ../..
229-
# # fi
190+
- name: handle shared object paths for Windows native build
191+
if: matrix.platform == 'windows-latest'
192+
shell: bash
193+
run: |
194+
mkdir build/upload
195+
cd build/bin
196+
rm hello_test TestVCellStoch testzip ziptool || true
197+
ls *.exe | awk '{print $1}' | xargs -I '{}' ldd '{}' | grep '=> /' | grep -v build | grep -iv windows | awk '{print $3}' | xargs -I '{}' cp -vn '{}' . || true
198+
ls *.dll | awk '{print $1}' | xargs -I '{}' ldd '{}' | grep '=> /' | grep -v build | grep -iv windows | awk '{print $3}' | xargs -I '{}' cp -vn '{}' . || true
199+
ls *.dll | awk '{print $1}' | xargs -I '{}' ldd '{}' | grep '=> /' | grep -v build | grep -iv windows | awk '{print $3}' | xargs -I '{}' cp -vn '{}' . || true
200+
chmod u+w,+x *
201+
zip ../upload/win64.zip ./*
202+
cd ../..
203+
# fi
230204
231205
- name: handle shared object paths for Linux native build
232206
if: matrix.platform == 'ubuntu-latest'
@@ -256,12 +230,12 @@ jobs:
256230
name: macos_arm64.tgz
257231
path: build/upload/mac64.tgz
258232

259-
# - name: Upload Windows binaries
260-
# if: matrix.platform == 'windows-latest'
261-
# uses: actions/upload-artifact@v4
262-
# with:
263-
# name: win64.zip
264-
# path: build/upload/win64.zip
233+
- name: Upload Windows binaries
234+
if: matrix.platform == 'windows-latest'
235+
uses: actions/upload-artifact@v4
236+
with:
237+
name: win64.zip
238+
path: build/upload/win64.zip
265239

266240
- name: Upload Linux binaries
267241
if: matrix.platform == 'ubuntu-latest'

0 commit comments

Comments
 (0)