1 | # $Id$ |
---|
2 | |
---|
3 | PortSystem 1.0 |
---|
4 | |
---|
5 | name geant4 |
---|
6 | version 4.9.3 |
---|
7 | categories science |
---|
8 | maintainers pd.infn.it:cristiano.fontana |
---|
9 | license Geant4 |
---|
10 | description Geant4 is a toolkit for the simulation of the passage of particles through matter. |
---|
11 | long_description Geant4 is a toolkit for the simulation of the passage of particles through matter. \ |
---|
12 | Its areas of application include high energy, nuclear and accelerator physics, as well as studies in medical and space science. \ |
---|
13 | The two main reference papers for Geant4 are published in Nuclear Instruments and Methods in Physics Research A 506 (2003) 250-303, \ |
---|
14 | and IEEE Transactions on Nuclear Science 53 No. 1 (2006) 270-278. |
---|
15 | homepage http://geant4.web.cern.ch/ |
---|
16 | notes GEANT4 needs some environment variables to run, they can be set using either ${prefix}/src/geant4/env.sh or ${prefix}/src/geant4/env.csh |
---|
17 | platforms darwin |
---|
18 | |
---|
19 | # Data files versions |
---|
20 | set G4NDL_v 3.13 |
---|
21 | set G4EMLOW_v 6.9 |
---|
22 | set PhotonEvaporation_v 2.0 |
---|
23 | set RadioactiveDecay_v 3.2 |
---|
24 | set G4ABLA_v 3.0 |
---|
25 | set RealSurface_v 1.0 |
---|
26 | |
---|
27 | distfiles geant${version}.tar.gz \ |
---|
28 | G4NDL.${G4NDL_v}.tar.gz \ |
---|
29 | G4EMLOW.${G4EMLOW_v}.tar.gz \ |
---|
30 | PhotonEvaporation.${PhotonEvaporation_v}.tar.gz \ |
---|
31 | G4RadioactiveDecay.${RadioactiveDecay_v}.tar.gz \ |
---|
32 | G4ABLA.${G4ABLA_v}.tar.gz \ |
---|
33 | RealSurface.${RealSurface_v}.tar.gz |
---|
34 | |
---|
35 | master_sites http://geant4.cern.ch/support/source/ |
---|
36 | |
---|
37 | checksums geant${version}.tar.gz \ |
---|
38 | md5 e2b02bac0bba8fb5a01e1caeefe86a7a \ |
---|
39 | sha1 9c657e90675d64993416b46dfce70710804379d4 \ |
---|
40 | rmd160 33f54c2dbf33a7eda1470db1a6bb44de279ac577 \ |
---|
41 | G4NDL.${G4NDL_v}.tar.gz \ |
---|
42 | md5 3aeb08f8532fc1d445b020ff9985b4e0 \ |
---|
43 | sha1 4acc412a2f29a7a8f84ac50aeb7331c8ed2889ae \ |
---|
44 | rmd160 243b206170d996c7b562a86e388ff4d5f8d11764 \ |
---|
45 | G4EMLOW.${G4EMLOW_v}.tar.gz \ |
---|
46 | md5 90af6d45b5053e9e355df38231e2060c \ |
---|
47 | sha1 d4d026f96990d4ed15a6b550b1990ba335248965 \ |
---|
48 | rmd160 8306a6af7ec41ec16790df2130b4f9b437bb7d9e \ |
---|
49 | PhotonEvaporation.${PhotonEvaporation_v}.tar.gz \ |
---|
50 | md5 097fa94e2ec361cbfe3477ed5886a423 \ |
---|
51 | sha1 df3b4994c7248da7a226c186be747c4b823d34fa \ |
---|
52 | rmd160 24d46b08b2ffeca5b3be186baffb650b99accc97 \ |
---|
53 | G4RadioactiveDecay.${RadioactiveDecay_v}.tar.gz \ |
---|
54 | md5 45e7ab756038e4ebac16f7d65e4227cc \ |
---|
55 | sha1 45e706e46a33e08b1706f069d15e8c2145f3410e \ |
---|
56 | rmd160 1f797977c0c66722f4b032ac546c26eaa8a9f14a \ |
---|
57 | G4ABLA.${G4ABLA_v}.tar.gz \ |
---|
58 | md5 d2d4e99b14f7a5057f4c10d9c2d647dd \ |
---|
59 | sha1 5f38676f1650a508e49d35f9405ac96984388135 \ |
---|
60 | rmd160 5a032ee8e90d00f39b67114fe257ec47001f347b \ |
---|
61 | RealSurface.${RealSurface_v}.tar.gz \ |
---|
62 | md5 0dde95e00fcd3bcd745804f870bb6884 \ |
---|
63 | sha1 9b4bd95c647dc702458eeaf89ebf62c5885e2ece \ |
---|
64 | rmd160 030513fe340e0cccbfe0b9ae9acb3ba6b5291ebb |
---|
65 | |
---|
66 | worksrcdir geant${version}/source |
---|
67 | |
---|
68 | depends_lib port:clhep \ |
---|
69 | port:zlib |
---|
70 | |
---|
71 | default_variants +global +motif +shared +gdml +raytracerx +aida |
---|
72 | |
---|
73 | |
---|
74 | variant debug description {Compile with debug flags on} { |
---|
75 | build.env-append G4DEBUG=1 |
---|
76 | } |
---|
77 | |
---|
78 | variant global description {Build with global libraries} conflicts granular { |
---|
79 | build.target global |
---|
80 | } |
---|
81 | |
---|
82 | variant granular description {Build with granular libraries} conflicts global { |
---|
83 | build.env-append G4LIB_USE_GRANULAR=1 |
---|
84 | |
---|
85 | build.target |
---|
86 | } |
---|
87 | |
---|
88 | variant shared description {Build shared libraries} conflicts static { |
---|
89 | build.env-append G4LIB_BUILD_SHARED=1 |
---|
90 | } |
---|
91 | |
---|
92 | variant static description {Build static libraries} conflicts shared { |
---|
93 | build.env-append G4LIB_BUILD_STATIC=1 |
---|
94 | } |
---|
95 | |
---|
96 | variant aida description {Enables the use with AIDA} { |
---|
97 | depends_lib-append port:iAIDA |
---|
98 | |
---|
99 | build.env-append G4ANALYSIS_USE=1 |
---|
100 | } |
---|
101 | |
---|
102 | variant noui description {Build without user interface nor visualizzation driver} conflicts motif athena raytracerx { |
---|
103 | build.env-append G4UI_NONE=1 |
---|
104 | build.env-append G4VIS_NONE=1 |
---|
105 | } |
---|
106 | |
---|
107 | variant motif description {Build with Motif user interface and visualizzation driver} { |
---|
108 | depends_lib-append port:mesa \ |
---|
109 | port:openmotif |
---|
110 | |
---|
111 | build.env-append XMFLAGS=-I${prefix}/include |
---|
112 | build.env-append XMLIBS='-L${prefix}/lib -lXm -lXpm' |
---|
113 | |
---|
114 | build.env-append G4VIS_USE_OPENGLX=1 |
---|
115 | build.env-append G4VIS_BUILD_OPENGLX_DRIVER=1 |
---|
116 | |
---|
117 | build.env-append G4VIS_USE_OPENGLXM=1 |
---|
118 | build.env-append G4VIS_BUILD_OPENGLXM_DRIVER=1 |
---|
119 | |
---|
120 | build.env-append G4UI_USE_XM=1 |
---|
121 | build.env-append G4UI_BUILD_XM_SESSION=1 |
---|
122 | } |
---|
123 | |
---|
124 | variant athena description {Build with Athena user interface} { |
---|
125 | depends_lib-append port:mesa |
---|
126 | |
---|
127 | build.env-append G4UI_BUILD_XAW_SESSION=1 |
---|
128 | build.env-append G4UI_USE_XAW=1 |
---|
129 | |
---|
130 | build.env-append XAWFLAGS= |
---|
131 | build.env-append XAWLIBS= |
---|
132 | } |
---|
133 | |
---|
134 | variant raytracerx description {Build with Raytracer visualizzation driver} { |
---|
135 | depends_lib-append port:mesa |
---|
136 | |
---|
137 | build.env-append G4VIS_USE_OPENGLX=1 |
---|
138 | build.env-append G4VIS_BUILD_OPENGLX_DRIVER=1 |
---|
139 | |
---|
140 | build.env-append G4VIS_USE_RAYTRACERX=1 |
---|
141 | build.env-append G4VIS_BUILD_RAYTRACERX_DRIVER=1 |
---|
142 | } |
---|
143 | |
---|
144 | variant gdml description {Build with Geometry Description Markup Language (GDML)} { |
---|
145 | depends_lib-append port:xercesc3 |
---|
146 | |
---|
147 | build.env-append XERCESCROOT=${prefix} |
---|
148 | |
---|
149 | build.env-append G4LIB_BUILD_GDML=1 |
---|
150 | } |
---|
151 | |
---|
152 | |
---|
153 | post-patch { |
---|
154 | ui_debug "---> Post-patch phase" |
---|
155 | |
---|
156 | # Propagate user's flags and compiler settings |
---|
157 | reinplace "s/-o/\$(LDFLAGS) -o/g" ${worksrcpath}/GNUmakefile |
---|
158 | |
---|
159 | reinplace "/\\\$(G4LIB)\\\/\\\$(G4SYSTEM)/d" ${workpath}/geant${version}/config/architecture.gmk |
---|
160 | |
---|
161 | # Replaces g++ with standard compiler and fixes some paths |
---|
162 | fs-traverse file ${workpath}/geant${version}/config { |
---|
163 | if {".gmk" == [file extension ${file}]} { |
---|
164 | reinplace "s:g++:${configure.cxx}:g" ${file} |
---|
165 | reinplace "s:gfortran:${configure.fc}:g" ${file} |
---|
166 | reinplace "s:CXXFLAGS += \$(INCFLAGS):CXXFLAGS += \$(INCFLAGS) -I\$(CLHEP_INCLUDE_DIR):g" ${file} |
---|
167 | reinplace "s:CPPFLAGS += \$(INCFLAGS):CXXFLAGS += \$(INCFLAGS) -I\$(CLHEP_INCLUDE_DIR):g" ${file} |
---|
168 | |
---|
169 | reinplace "s:\$(G4LIB)/\$(G4SYSTEM):\$(G4LIB):g" ${file} |
---|
170 | reinplace "s:\$(G4BIN)/\$(G4SYSTEM):\$(G4BIN):g" ${file} |
---|
171 | reinplace "s:\$(G4TMP)/\$(G4SYSTEM):\$(G4TMP):g" ${file} |
---|
172 | } |
---|
173 | } |
---|
174 | |
---|
175 | # Fix an error message in build phase (I hope that it will not cause any problems) |
---|
176 | reinplace "s:LDFLAGS += -bind_at_load -arch_multiple:LDFLAGS += -bind_at_load:g" ${workpath}/geant${version}/config/sys/Darwin-g++.gmk |
---|
177 | |
---|
178 | reinplace "s:Darwin-${configure.cxx}:Darwin-g++:g" ${workpath}/geant${version}/config/sys/Darwin-g++.gmk |
---|
179 | |
---|
180 | reinplace "s:\$(G4LIB)/\$(G4SYSTEM):\$(G4LIB):g" ${workpath}/geant${version}/source/GNUmakefile |
---|
181 | reinplace "s:\$(G4BIN)/\$(G4SYSTEM):\$(G4BIN):g" ${workpath}/geant${version}/source/GNUmakefile |
---|
182 | reinplace "s:\$(G4TMP)/\$(G4SYSTEM):\$(G4TMP):g" ${workpath}/geant${version}/source/GNUmakefile |
---|
183 | |
---|
184 | fs-traverse file ${workpath}/geant${version}/examples { |
---|
185 | if [string match {/GNUmakefile$} ${file}] { |
---|
186 | reinplace "s:\$(G4LIB)/\$(G4SYSTEM):\$(G4LIB):g" ${file} |
---|
187 | reinplace "s:\$(G4BIN)/\$(G4SYSTEM):\$(G4BIN):g" ${file} |
---|
188 | reinplace "s:\$(G4TMP)/\$(G4SYSTEM):\$(G4TMP):g" ${file} |
---|
189 | } |
---|
190 | } |
---|
191 | |
---|
192 | # Fixes paths in shell setup scripts |
---|
193 | foreach fileextension {sh csh} { |
---|
194 | file copy ${filespath}/env.${fileextension} ${worksrcpath} |
---|
195 | |
---|
196 | set file ${worksrcpath}/env.${fileextension} |
---|
197 | |
---|
198 | reinplace "s:@PREFIX@:${prefix}:g" ${file} |
---|
199 | reinplace "s:@WORKSRCPATH@:${worksrcpath}:g" ${file} |
---|
200 | reinplace "s:@DESTROOT@:${destroot}:g" ${file} |
---|
201 | reinplace "s:@VERSION@:${version}:g" ${file} |
---|
202 | |
---|
203 | reinplace "s:@G4NDL_V@:${G4NDL_v}:g" ${file} |
---|
204 | reinplace "s:@G4EMLOW_V@:${G4EMLOW_v}:g" ${file} |
---|
205 | reinplace "s:@PHOTONEVAPORATION_V@:${PhotonEvaporation_v}:g" ${file} |
---|
206 | reinplace "s:@RADIOACTIVEDECAY_V@:${RadioactiveDecay_v}:g" ${file} |
---|
207 | reinplace "s:@G4ABLA_V@:${G4ABLA_v}:g" ${file} |
---|
208 | reinplace "s:@REALSURFACE_V@:${RealSurface_v}:g" ${file} |
---|
209 | |
---|
210 | if {${fileextension} == "sh"} { |
---|
211 | set export "export" |
---|
212 | } else { |
---|
213 | set export "setenv" |
---|
214 | } |
---|
215 | |
---|
216 | set env_file_stream [open ${file} "a"] |
---|
217 | |
---|
218 | if {[variant_isset aida]} { |
---|
219 | puts ${env_file_stream} "${export} G4ANALYSIS_USE=1" |
---|
220 | } |
---|
221 | |
---|
222 | if {[variant_isset athena]} { |
---|
223 | puts ${env_file_stream} "${export} G4UI_BUILD_XAW_SESSION=1" |
---|
224 | puts ${env_file_stream} "${export} G4UI_USE_XAW=1" |
---|
225 | |
---|
226 | puts ${env_file_stream} "${export} XAWFLAGS=" |
---|
227 | puts ${env_file_stream} "${export} XAWLIBS=" |
---|
228 | } |
---|
229 | |
---|
230 | if {[variant_isset debug]} { |
---|
231 | puts ${env_file_stream} "${export} G4DEBUG=1" |
---|
232 | } |
---|
233 | |
---|
234 | if {[variant_isset gdml]} { |
---|
235 | puts ${env_file_stream} "${export} XERCESCROOT=${prefix}" |
---|
236 | puts ${env_file_stream} "${export} G4LIB_BUILD_GDML=1" |
---|
237 | } |
---|
238 | |
---|
239 | if {[variant_isset granular]} { |
---|
240 | puts ${env_file_stream} "${export} G4LIB_USE_GRANULAR=1" |
---|
241 | } |
---|
242 | |
---|
243 | if {[variant_isset motif]} { |
---|
244 | puts ${env_file_stream} "${export} XMFLAGS=-I${prefix}/include" |
---|
245 | puts ${env_file_stream} "${export} XMLIBS='-L${prefix}/lib -lXm -lXpm'" |
---|
246 | |
---|
247 | puts ${env_file_stream} "${export} G4VIS_USE_OPENGLX=1" |
---|
248 | puts ${env_file_stream} "${export} G4VIS_BUILD_OPENGLX_DRIVER=1" |
---|
249 | |
---|
250 | puts ${env_file_stream} "${export} G4VIS_USE_OPENGLXM=1" |
---|
251 | puts ${env_file_stream} "${export} G4VIS_BUILD_OPENGLXM_DRIVER=1" |
---|
252 | |
---|
253 | puts ${env_file_stream} "${export} G4UI_USE_XM=1" |
---|
254 | puts ${env_file_stream} "${export} G4UI_BUILD_XM_SESSION=1" |
---|
255 | } |
---|
256 | |
---|
257 | if {[variant_isset noui]} { |
---|
258 | puts ${env_file_stream} "${export} G4UI_NONE=1" |
---|
259 | puts ${env_file_stream} "${export} G4VIS_NONE=1" |
---|
260 | } |
---|
261 | |
---|
262 | if {[variant_isset raytracerx]} { |
---|
263 | puts ${env_file_stream} "${export} G4VIS_USE_OPENGLX=1" |
---|
264 | puts ${env_file_stream} "${export} G4VIS_BUILD_OPENGLX_DRIVER=1" |
---|
265 | |
---|
266 | puts ${env_file_stream} "${export} G4VIS_USE_RAYTRACERX=1" |
---|
267 | puts ${env_file_stream} "${export} G4VIS_BUILD_RAYTRACERX_DRIVER=1" |
---|
268 | } |
---|
269 | |
---|
270 | if {[variant_isset shared]} { |
---|
271 | puts ${env_file_stream} "${export} G4LIB_BUILD_SHARED=1" |
---|
272 | } |
---|
273 | |
---|
274 | if {[variant_isset static]} { |
---|
275 | puts ${env_file_stream} "${export} G4LIB_BUILD_STATIC=1" |
---|
276 | } |
---|
277 | |
---|
278 | flush ${env_file_stream} |
---|
279 | close ${env_file_stream} |
---|
280 | } |
---|
281 | } |
---|
282 | |
---|
283 | use_configure no |
---|
284 | |
---|
285 | build.env-append CXX=${configure.cxx} |
---|
286 | build.env-append CC=${configure.cc} |
---|
287 | build.env-append G4SYSTEM=Darwin-g++ |
---|
288 | build.env-append G4INSTALL=${workpath}/geant${version} |
---|
289 | build.env-append G4INCLUDE=${workpath}/geant${version}/include |
---|
290 | build.env-append G4TMP=${workpath}/geant${version}/tmp |
---|
291 | build.env-append G4LIB=${workpath}/geant${version}/lib |
---|
292 | build.env-append G4BIN=${workpath}/geant${version}/bin |
---|
293 | |
---|
294 | build.env-append G4LEVELGAMMADATA=${prefix}/share/geant4/data/PhotonEvaporation${PhotonEvaporation_v} |
---|
295 | build.env-append G4RADIOACTIVEDATA=${prefix}/share/geant4/data/RadioactiveDecay${RadioactiveDecay_v} |
---|
296 | build.env-append G4LEDATA=${prefix}/share/geant4/data/G4EMLOW${G4EMLOW_v} |
---|
297 | build.env-append G4NEUTRONHPDATA=${prefix}/share/geant4/data/G4NDL${G4NDL_v} |
---|
298 | build.env-append G4ABLADATA=${prefix}/share/geant4/data/G4ABLA${G4ABLA_v} |
---|
299 | #build.env-append G4ELASTICDATA= |
---|
300 | |
---|
301 | build.env-append CLHEP_BASE_DIR=${prefix} |
---|
302 | build.env-append CLHEP_INCLUDE_DIR=${prefix}/include |
---|
303 | build.env-append CLHEP_LIB_DIR=${prefix}/lib |
---|
304 | build.env-append CLHEP_LIB=CLHEP |
---|
305 | |
---|
306 | # Next variables need more work to be put in a variant... |
---|
307 | |
---|
308 | # I do not know what is this for. |
---|
309 | #build.env-append OGLHOME= |
---|
310 | |
---|
311 | # These are needed to include Qt interfaces |
---|
312 | #build.env-append QTFLAGS= |
---|
313 | #build.env-append QTLIBS= |
---|
314 | #build.env-append QTMOC= |
---|
315 | #build.env-append G4UI_USE_QT=1 |
---|
316 | #build.env-append G4UI_BUILD_QT_SESSION=1 |
---|
317 | #build.env-append G4VIS_USE_OPENGLQT=1 |
---|
318 | #build.env-append G4VIS_BUILD_OPENGLQT_DRIVER=1 |
---|
319 | |
---|
320 | # These are needed to include DAWN interfaces, but I can not find DAWN |
---|
321 | #build.env-append G4VIS_USE_DAWN=1 |
---|
322 | #build.env-append G4VIS_BUILD_DAWN_DRIVER=1 |
---|
323 | |
---|
324 | # To be used with DAWN |
---|
325 | #build.env-append G4LIB_USE_ZLIB=1 |
---|
326 | #build.env-append G4LIB_BUILD_ZLIB=1 |
---|
327 | |
---|
328 | # These are needed to include OpenInventor, but its Portfile does not exist |
---|
329 | #build.env-append OIVHOME= |
---|
330 | #build.env-append G4VIS_USE_OIX=1 |
---|
331 | #build.env-append G4VIS_BUILD_OIX_DRIVER=1 |
---|
332 | |
---|
333 | # These are needed to include VRML |
---|
334 | #build.env-append G4VIS_USE_VRML=1 |
---|
335 | #build.env-append G4VIS_BUILD_VRML_DRIVER=1 |
---|
336 | |
---|
337 | # These are needed to include a converter from GEANT3 to GEANT4, but require CERNlib |
---|
338 | #build.env-append G4LIB_BUILD_G3TOG4=1 |
---|
339 | #build.env-append G4LIB_USE_G3TOG4=1 |
---|
340 | |
---|
341 | build.args |
---|
342 | |
---|
343 | build { |
---|
344 | ui_debug "Prepares make database" |
---|
345 | system "cd ${worksrcpath} && env ${build.env} ${build.cmd} -n -p -f ${workpath}/geant${version}/config/scripts/GNUmakefile > ${workpath}/geant${version}/source/GNUmakefile.db" |
---|
346 | |
---|
347 | ui_debug "Builds libraries" |
---|
348 | ui_debug "Issuing command:" |
---|
349 | ui_debug "cd ${worksrcpath} && env ${build.env} ${build.cmd} ${build.target}" |
---|
350 | |
---|
351 | if {[variant_isset global]} { |
---|
352 | # In Gentoo's mailing list they say that a rebuild is needed |
---|
353 | ui_debug "Builds global libraries..." |
---|
354 | system "cd ${worksrcpath} && env ${build.env} ${build.cmd} global" |
---|
355 | ui_debug "...and rebuilds" |
---|
356 | } |
---|
357 | |
---|
358 | system "cd ${worksrcpath} && env ${build.env} ${build.cmd}" |
---|
359 | |
---|
360 | ui_debug "Prepares header files" |
---|
361 | system "cd ${worksrcpath} && env ${build.env} ${build.cmd} includes dependencies=\"\"" |
---|
362 | } |
---|
363 | |
---|
364 | destroot { |
---|
365 | ui_debug "Installing env scripts to ${prefix}/src/geant4" |
---|
366 | |
---|
367 | xinstall -d ${destroot}${prefix}/src/geant4 |
---|
368 | |
---|
369 | xinstall -m 755 -W ${worksrcpath} env.sh env.csh ${destroot}${prefix}/src/geant4 |
---|
370 | |
---|
371 | ui_debug "Installing GEANT4 data to ${prefix}/share/geant4/data" |
---|
372 | |
---|
373 | xinstall -d ${destroot}${prefix}/share/geant4/data |
---|
374 | |
---|
375 | foreach data "G4NDL${G4NDL_v} G4EMLOW${G4EMLOW_v} PhotonEvaporation${PhotonEvaporation_v} RadioactiveDecay${RadioactiveDecay_v} G4ABLA${G4ABLA_v} RealSurface${RealSurface_v}" { |
---|
376 | ui_debug "-> Installing ${data} to ${prefix}/share/geant4/data" |
---|
377 | file copy ${workpath}/${data} ${destroot}${prefix}/share/geant4/data |
---|
378 | } |
---|
379 | |
---|
380 | ui_debug "Installing sources to ${prefix}/src/geant4" |
---|
381 | |
---|
382 | foreach sources {config source environments examples} { |
---|
383 | ui_debug "-> Installing ${sources} to ${prefix}/src/geant4" |
---|
384 | file copy ${workpath}/geant${version}/${sources} ${destroot}${prefix}/src/geant4 |
---|
385 | } |
---|
386 | |
---|
387 | foreach sources {include lib bin} { |
---|
388 | ui_debug "Installing ${sources} to ${prefix}/${sources}" |
---|
389 | fs-traverse file ${workpath}/geant${version}/${sources} { |
---|
390 | switch -exact [file type ${file}] { |
---|
391 | directory { |
---|
392 | set stripped [string map {${workpath}/geant${version}/ ""} ${file}] |
---|
393 | xinstall -d -m 755 ${destroot}${prefix}/${stripped} |
---|
394 | } |
---|
395 | file { xinstall ${file} ${destroot}${prefix}/${sources} } |
---|
396 | } |
---|
397 | } |
---|
398 | } |
---|
399 | } |
---|