1+ name : Build binaries
2+
3+ on :
4+ push :
5+ pull_request :
6+ release :
7+ types : [created]
8+
9+ jobs :
10+
11+ ubuntu :
12+ strategy :
13+ matrix :
14+ projects : [
15+ {short_name: "physiboss-tutorial", project: "physiboss-tutorial", name: "PhysiBoSS tutorial", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
16+ {short_name: "physiboss-tutorial-invasion", project: "physiboss-tutorial-invasion", name: "PhysiBoSS Cancer Invasion", binary: "invasion_model", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
17+ {short_name: "physiboss-cell-lines", project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
18+ {short_name: "template_BM", project: "template_BM", name: "PhysiBoSS Template", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
19+ {short_name: "template", project: "template", name: "PhysiCell Template", binary: "project", extra_run: ""},
20+ {short_name: "rules", project: "rules-sample", name: "PhysiCell Rules", binary: "project", extra_run: ""},
21+ {short_name: "physimess", project: "physimess-sample", name: "PhysiMeSS", binary: "project", extra_run: ""},
22+ {short_name: "interaction", project: "interaction-sample", name: "PhysiCell Interaction", binary: "interaction_demo", extra_run: ""},
23+ ]
24+
25+ runs-on : ubuntu-latest
26+
27+ steps :
28+ - uses : actions/checkout@v4
29+
30+ - name : Build ${{ matrix.projects.name }}
31+ run : |
32+ make ${{ matrix.projects.project }}
33+ make clean
34+ ${{ matrix.projects.extra_run }}
35+ make static STATIC_OPENMP=/usr/lib/gcc/x86_64-linux-gnu/11/libgomp.a
36+
37+ - name : Checking binary for ${{ matrix.projects.name }}
38+ run : |
39+ ldd ${{ matrix.projects.binary }}
40+
41+ - name : Build ${{ matrix.projects.name }} project archive
42+ run : |
43+ rm -fr config/PhysiCell_settings-backup.xml
44+ tar -zcvf ${{ matrix.projects.short_name }}-linux.tar.gz ${{ matrix.projects.binary }} Makefile main.cpp config/ custom_modules/
45+
46+ - uses : actions/upload-release-asset@v1
47+ if : github.event_name == 'release'
48+ env :
49+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
50+ with :
51+ upload_url : ${{ github.event.release.upload_url }}
52+ asset_name : ${{ matrix.projects.short_name }}-linux.tar.gz
53+ asset_path : ${{ github.workspace }}/${{ matrix.projects.short_name }}-linux.tar.gz
54+ asset_content_type : application/gzip
55+
56+
57+ windows :
58+ strategy :
59+ matrix :
60+ projects : [
61+ {short_name: "physiboss-tutorial", project: "physiboss-tutorial", name: "PhysiBoSS tutorial", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
62+ {short_name: "physiboss-tutorial-invasion", project: "physiboss-tutorial-invasion", name: "PhysiBoSS Cancer Invasion", binary: "invasion_model", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
63+ {short_name: "physiboss-cell-lines", project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
64+ {short_name: "template_BM", project: "template_BM", name: "PhysiBoSS Template", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
65+ {short_name: "template", project: "template", name: "PhysiCell Template", binary: "project", extra_run: ""},
66+ {short_name: "rules", project: "rules-sample", name: "PhysiCell Rules", binary: "project", extra_run: ""},
67+ {short_name: "physimess", project: "physimess-sample", name: "PhysiMeSS", binary: "project", extra_run: ""},
68+ {short_name: "interaction", project: "interaction-sample", name: "PhysiCell Interaction", binary: "interaction_demo", extra_run: ""},
69+ ]
70+
71+ runs-on : windows-latest
72+
73+ defaults :
74+ run :
75+ shell : msys2 {0}
76+
77+ steps :
78+ - uses : actions/checkout@v4
79+
80+ - uses : msys2/setup-msys2@v2
81+ with :
82+ update : true
83+ install : mingw-w64-x86_64-binutils mingw-w64-x86_64-gcc mingw-w64-x86_64-headers-git mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libwinpthread-git mingw-w64-x86_64-lapack mingw-w64-x86_64-openblas mingw-w64-x86_64-libxml2 mingw-w64-x86_64-bzip2 mingw-w64-x86_64-python mingw-w64-x86_64-python-zstandard mingw-w64-x86_64-python-cffi make bison flex mingw-w64-x86_64-ca-certificates
84+
85+ - name : Build ${{ matrix.projects.name }} project
86+ run : |
87+ make ${{ matrix.projects.project }}
88+ make clean
89+ python beta/setup_windows_dep.py
90+ ${{ matrix.projects.extra_run }}
91+ make static
92+
93+ - name : Checking binary for ${{ matrix.projects.name }}
94+ run : |
95+ ldd .\\${{ matrix.projects.binary }}.exe
96+
97+ - name : Build ${{ matrix.projects.name }} project archive
98+ run : |
99+ rm -fr config/PhysiCell_settings-backup.xml
100+ tar -zcvf ${{ matrix.projects.short_name }}-win.tar.gz ${{ matrix.projects.binary }}.exe *.dll Makefile main.cpp config/ custom_modules/
101+
102+ - uses : actions/upload-release-asset@v1
103+ if : github.event_name == 'release'
104+ env :
105+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
106+ with :
107+ upload_url : ${{ github.event.release.upload_url }}
108+ asset_name : ${{ matrix.projects.short_name }}-win.tar.gz
109+ asset_path : ${{ github.workspace }}\${{ matrix.projects.short_name }}-win.tar.gz
110+ asset_content_type : application/gzip
111+
112+
113+ macos_step0a :
114+ strategy :
115+ matrix :
116+ projects : [
117+ {short_name: "physiboss-tutorial", project: "physiboss-tutorial", name: "PhysiBoSS tutorial", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
118+ {short_name: "physiboss-tutorial-invasion", project: "physiboss-tutorial-invasion", name: "PhysiBoSS Cancer Invasion", binary: "invasion_model", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
119+ {short_name: "physiboss-cell-lines", project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
120+ {short_name: "template_BM", project: "template_BM", name: "PhysiBoSS Template", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
121+ {short_name: "template", project: "template", name: "PhysiCell Template", binary: "project", extra_run: ""},
122+ {short_name: "rules", project: "rules-sample", name: "PhysiCell Rules", binary: "project", extra_run: ""},
123+ {short_name: "physimess", project: "physimess-sample", name: "PhysiMeSS", binary: "project", extra_run: ""},
124+ {short_name: "interaction", project: "interaction-sample", name: "PhysiCell Interaction", binary: "interaction_demo", extra_run: ""},
125+ ]
126+
127+ runs-on : macos-12
128+
129+ steps :
130+ - uses : actions/checkout@v4
131+
132+ - name : Install dependencies
133+ run : brew install gcc@13
134+
135+ - name : Build ${{ matrix.projects.name }} project
136+ run : |
137+ export MACOSX_DEPLOYMENT_TARGET=12
138+ make ${{ matrix.projects.project }}
139+ make clean
140+ ${{ matrix.projects.extra_run }}
141+ make PHYSICELL_CPP=g++-13 static
142+ cp ${{ matrix.projects.binary }} ${{ matrix.projects.binary }}_macos12
143+
144+ - name : Caching produced project binary
145+ uses : actions/cache@v4
146+ with :
147+ path : |
148+ ${{ github.workspace }}/${{ matrix.projects.binary }}_macos12
149+ key : ${{ runner.os }}-macos12-${{ github.run_id }}
150+
151+ - name : Look at the generated binary
152+ run : |
153+ otool -L ${{ matrix.projects.binary }}
154+ otool -l ${{ matrix.projects.binary }}
155+ lipo -archs ${{ matrix.projects.binary }}
156+
157+ macos_step0b :
158+ strategy :
159+ matrix :
160+ projects : [
161+ {short_name: "physiboss-tutorial", project: "physiboss-tutorial", name: "PhysiBoSS tutorial", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
162+ {short_name: "physiboss-tutorial-invasion", project: "physiboss-tutorial-invasion", name: "PhysiBoSS Cancer Invasion", binary: "invasion_model", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
163+ {short_name: "physiboss-cell-lines", project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
164+ {short_name: "template_BM", project: "template_BM", name: "PhysiBoSS Template", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
165+ {short_name: "template", project: "template", name: "PhysiCell Template", binary: "project", extra_run: ""},
166+ {short_name: "rules", project: "rules-sample", name: "PhysiCell Rules", binary: "project", extra_run: ""},
167+ {short_name: "physimess", project: "physimess-sample", name: "PhysiMeSS", binary: "project", extra_run: ""},
168+ {short_name: "interaction", project: "interaction-sample", name: "PhysiCell Interaction", binary: "interaction_demo", extra_run: ""},
169+ ]
170+
171+ runs-on : macos-14
172+
173+ steps :
174+ - uses : actions/checkout@v4
175+
176+ - name : Install dependencies
177+ run : brew install gcc@13
178+
179+ - name : Build ${{ matrix.projects.name }} project
180+ run : |
181+ export MACOSX_DEPLOYMENT_TARGET=12
182+ make ${{ matrix.projects.project }}
183+ make clean
184+ ${{ matrix.projects.extra_run }}
185+ make PHYSICELL_CPP=g++-13 static
186+ cp ${{ matrix.projects.binary }} ${{ matrix.projects.binary }}_macosm1
187+
188+ - name : Caching produced project binary
189+ uses : actions/cache@v4
190+ with :
191+ path : |
192+ ${{ github.workspace }}/${{ matrix.projects.binary }}_macosm1
193+ key : ${{ runner.os }}-macosm1-${{ github.run_id }}
194+
195+ - name : Look at the generated binary
196+ run : |
197+ otool -L ${{ matrix.projects.binary }}
198+ otool -l ${{ matrix.projects.binary }}
199+ lipo -archs ${{ matrix.projects.binary }}
200+
201+ macos_step1 :
202+ strategy :
203+ matrix :
204+ projects : [
205+ {short_name: "physiboss-tutorial", project: "physiboss-tutorial", name: "PhysiBoSS tutorial", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
206+ {short_name: "physiboss-tutorial-invasion", project: "physiboss-tutorial-invasion", name: "PhysiBoSS Cancer Invasion", binary: "invasion_model", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
207+ {short_name: "physiboss-cell-lines", project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
208+ {short_name: "template_BM", project: "template_BM", name: "PhysiBoSS Template", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"},
209+ {short_name: "template", project: "template", name: "PhysiCell Template", binary: "project", extra_run: ""},
210+ {short_name: "rules", project: "rules-sample", name: "PhysiCell Rules", binary: "project", extra_run: ""},
211+ {short_name: "physimess", project: "physimess-sample", name: "PhysiMeSS", binary: "project", extra_run: ""},
212+ {short_name: "interaction", project: "interaction-sample", name: "PhysiCell Interaction", binary: "interaction_demo", extra_run: ""},
213+ ]
214+
215+ runs-on : macos-12
216+ needs : [macos_step0a, macos_step0b]
217+
218+ steps :
219+ - uses : actions/checkout@v4
220+
221+ - name : Caching produced project binary
222+ uses : actions/cache@v4
223+ with :
224+ path : |
225+ ${{ github.workspace }}/${{ matrix.projects.binary }}_macosm1
226+ key : ${{ runner.os }}-macosm1-${{ github.run_id }}
227+
228+ - name : Caching produced project binary
229+ uses : actions/cache@v4
230+ with :
231+ path : |
232+ ${{ github.workspace }}/${{ matrix.projects.binary }}_macos12
233+ key : ${{ runner.os }}-macos12-${{ github.run_id }}
234+
235+ - name : Creating universal binary
236+ run : |
237+ lipo -create -output ${{ matrix.projects.binary }} ${{ matrix.projects.binary }}_macos12 ${{ matrix.projects.binary }}_macosm1
238+
239+ - name : Checking universal binary
240+ run : |
241+ lipo -archs ${{ matrix.projects.binary }}
242+ otool -l ${{ matrix.projects.binary }}
243+ otool -L ${{ matrix.projects.binary }}
244+
245+ - name : Build project archive
246+ run : |
247+ make ${{ matrix.projects.project }}
248+ rm -fr config/PhysiCell_settings-backup.xml
249+ tar -zcvf ${{ matrix.projects.short_name }}-macos.tar.gz ${{ matrix.projects.binary }} Makefile main.cpp config/ custom_modules/
250+
251+ - uses : actions/upload-release-asset@v1
252+ if : github.event_name == 'release'
253+ env :
254+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
255+ with :
256+ upload_url : ${{ github.event.release.upload_url }}
257+ asset_name : ${{ matrix.projects.short_name }}-macos.tar.gz
258+ asset_path : ${{ github.workspace }}/${{ matrix.projects.short_name }}-macos.tar.gz
259+ asset_content_type : application/gzip
0 commit comments