source: trunk/dports/math/atlas/Portfile @ 111786

Last change on this file since 111786 was 111786, checked in by vince@…, 6 years ago

Use [vercmp] instead of a plain compare (thanks Ryan)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 25.4 KB
Line 
1# $Id: Portfile 111786 2013-10-01 18:26:22Z vince@macports.org $
2
3PortSystem              1.0
4PortGroup               muniversal 1.0
5
6categories              math
7license                 BSD
8name                    atlas
9version                 3.10.1
10revision                5
11
12# additional versions
13set lapackversion       3.4.2
14set lapackname          lapack
15set atlasdist           ${name}${version}.tar.bz2
16set lapackdist          ${lapackname}-${lapackversion}.tgz
17
18maintainers             vince
19platforms               darwin
20
21description             Portable optimal linear algebra software
22long_description        Provides a complete BLAS and LAPACK API.\nATLAS\
23                        achieves performance on par\
24                        with machine-specific tuned libraries.
25
26# No precompiled binaries
27#archive_sites
28
29homepage                http://math-atlas.sourceforge.net/
30
31master_sites            sourceforge:math-atlas:atlas \
32                        http://www.netlib.org/lapack:lapack
33
34distfiles               ${atlasdist}:atlas \
35                        ${lapackdist}:lapack
36
37patchfiles              patch-emit_mm_c.diff \
38                        patch-ATL_cmm4x4x128_av_c.diff
39#                        patch-archinfo_x86_c.diff\
40#                        patch-tfc_c.diff
41
42checksums               atlas3.10.1.tar.bz2 \
43                        rmd160  67f928ad900caa300b23e2f824b8a495f416c8d6 \
44                        sha256  a215b492204aae0205f4028e7c4076492a5d6a564f8f859ff062fd79587bcc86 \
45                        lapack-3.4.2.tgz \
46                        rmd160  8740c35c9a85b71424fe1ffeed192256aebeb431 \
47                        sha256  60a65daaf16ec315034675942618a2230521ea7adf85eea788ee54841072faf0
48
49compiler.blacklist       macports-clang-3.1 macports-clang-3.0 \
50                         macports-clang-2.9
51
52set     gcc_version      0
53set     use_clang        ""
54
55variant gcc48            conflicts   gcc46 gcc47 clang mpclang33 perf \
56                         description {build using macports-gcc-4.8} {
57
58    configure.compiler      macports-gcc-4.8
59}
60
61if {[variant_isset gcc48]} {
62
63    set gcc_version         48
64    set use_clang           ""
65}
66
67variant gcc47           conflicts   gcc46 gcc48 clang mpclang33 perf \
68                        description {build using macports-gcc-4.7} {
69
70    configure.compiler      macports-gcc-4.7
71}
72
73if {[variant_isset gcc47]} {
74
75    set gcc_version         47
76    set use_clang           ""
77}
78
79variant gcc46           conflicts   gcc47 gcc48 clang mpclang33 perf\
80                        description {build using macports-gcc-4.6} {
81
82    configure.compiler      macports-gcc-4.6
83}
84
85if {[variant_isset gcc46]} {
86
87    set gcc_version         46
88    set use_clang           ""
89
90}
91
92variant clang           conflicts   gcc46 gcc47 gcc48 mpclang33 \
93                        description {use XCode clang and gfortran} {
94
95    pre-fetch {
96        if {[vercmp ${xcodeversion} 5.0] < 0} {
97            return -code error    "This clang version is not supported.\
98                                    Please upgrade to Xcode 5."
99        }
100    }
101
102    configure.compiler      clang
103}
104
105if {[variant_isset clang]} {
106
107    set use_clang           "XCode"
108    set gcc_version         0
109}
110
111variant mpclang33       conflicts   gcc46 gcc47 gcc48 clang perf\
112                        description {use mp-clang-3.3 and gfortran} {
113
114    configure.compiler      macports-clang-3.3
115}
116
117if {[variant_isset mpclang33]} {
118
119    set use_clang           "33"
120    set gcc_version         0
121}
122
123variant perf conflicts gcc46 gcc47 gcc48 mpclang33 clang \
124             description {Uses clang-mp-3.3 for C and dragonegg-3.3 for Fortran} {
125
126    configure.compiler      macports-clang-3.3
127    depends_build-append    port:dragonegg-3.3-gcc-4.8
128    configure.f77           ${prefix}/bin/dragonegg-3.3-gfortran-mp-4.8
129
130    set clang_flags         "-O3 -fPIC -fomit-frame-pointer"
131    set gcc_flags           "${clang_flags} \
132                            -specs=${prefix}/libexec/dragonegg/llvm33gcc48-integrated-as.specs"
133}
134
135if {[variant_isset perf]} {
136
137    set use_clang           "33"
138    set gcc_version         48
139}
140
141variant nofortran       description {Forgo use of fortran compiler} {
142}
143
144# AVX or higher?
145
146if {(${os.major} > 11 && \
147        (![catch {sysctl hw.optional.fma} result1] && $result1 == 1)) ||
148        (![catch {sysctl hw.cpufamily} result2] && $result2 == 280134364)} {
149
150    set has_fma "yes"
151} else {
152
153    set has_fma "no"
154}
155
156if {(${os.major} > 11 && \
157        (![catch {sysctl hw.optional.avx2_0} result1] && $result1 == 1)) ||
158        (![catch {sysctl hw.cpufamily} result2] && $result2 == 280134364)} {
159
160    set has_avx2 "yes"
161} else {
162
163    set has_avx2 "no"
164}
165
166if {(${os.major} > 10 && \
167        (![catch {sysctl hw.optional.avx1_0} result1] && $result1 == 1)) ||
168        (![catch {sysctl hw.cpufamily} result2] && $result2 == 1418770316)} {
169
170    set has_avx "yes"
171} else {
172
173    set has_avx "no"
174}
175
176# If none of the above variants is chosen, make gcc47 the default for
177# up to SSE4.2 (Core i1) capable processors, and mp-clang-3.3 for newer
178
179if {![variant_isset gcc46] && ![variant_isset gcc47] && \
180    ![variant_isset gcc48] && ![variant_isset clang] && \
181    ![variant_isset perf] && ![variant_isset mpclang33]} {
182
183    if {${has_avx} == "no"} {
184   
185        # Defaults to gcc47
186        default_variants    +gcc47
187        set gcc_version     47
188        set use_clang       ""
189    } else {
190   
191        # Defaults to clang-mp-3.3
192        default_variants    +mpclang33
193        set gcc_version     0
194        set use_clang       "33"
195    }
196}
197
198set universal           [variant_isset universal]
199
200# Finds the type of CPU we are running on
201set native_arch ${build_arch}
202
203if {${os.arch} == "i386"} {
204
205    set universal_archs_supported {i386 x86_64}
206    if {![catch {exec sysctl -n hw.machine} result]} {
207        set native_arch ${result}
208    }
209} elseif {${os.arch} == "powerpc"} {
210
211    set universal_archs_supported {ppc  ppc64}
212    if {![catch {exec sysctl -n hw.cpusubtype} result] && $result == 100} {
213        set native_arch "ppc64"
214    } else {
215   
216        set native_arch "ppc"
217    }
218}
219
220configure.args \
221    --with-netlib-lapack-tarfile=${distpath}/${lapackdist} \
222    -O 12 \
223    -v 5 \
224    --dylibs
225
226# Chose the right flags for GCC and Clang compilers
227
228if {${build_arch} == "i386" || ${build_arch} == "x86_64"} {
229
230    # General flags
231    # GCC
232    set gcc_flags   "-fomit-frame-pointer -mfpmath=sse -O3\
233                     -fno-schedule-insns2 -fPIC"
234
235    # Clang
236    set clang_flags "-O3 -fomit-frame-pointer -fPIC"
237
238    # Vectorizing unit flags
239    if {${has_fma} == "yes"} {
240   
241        # Only Clang handles AVX+ correctly
242        set gvct_flag   "-msse4.2"
243        # downgrade FMA to AVX for the time being
244        set cvct_flag   "-mavx"
245        if {${use_clang} != ""} {
246
247            configure.args-append   -A 26 -V 480
248        } else {
249
250            # No AVX when using GCC 4.x
251            configure.args-append   -A 26 -V 448
252        }
253    } elseif  {${has_avx2} == "yes"} {
254   
255        set gvct_flag   "-msse4.2"
256        set cvct_flag   "-mavx"
257    } elseif {${has_avx} == "yes"} {
258
259        set gvct_flag   "-msse4.2"
260        set cvct_flag   "-mavx"
261    } elseif {${os.major} > 9 && \
262            ![catch {sysctl hw.optional.sse4_2} result1] && $result1 == 1} {
263
264        set gvct_flag   "-msse4.2"
265        set cvct_flag   "-msse4.2"
266    } elseif {${os.major} > 9 && \
267            ![catch {sysctl hw.optional.sse4_1} result1] && $result1 == 1} {
268
269        set gvct_flag   "-msse4.1"
270        set cvct_flag   "-msse4.1"
271    } elseif {${os.major} > 8 && \
272    ![catch {sysctl hw.optional.supplementalsse3} result1] && $result1 == 1} {
273
274        set gvct_flag   "-mssse3"
275        set cvct_flag   "-mssse3"
276    } else {
277
278        # Default vectorization flag is sse3 (CoreSolo / CoreDuo)
279        set gvct_flag   "-msse3"
280        set cvct_flag   "-msse3"
281    }
282} elseif {${build_arch} == "ppc"} {
283
284    # PPC
285    set gcc_flags           "-O3 -mcpu=7400 -mtune=7400\
286                            -fno-schedule-insns -fschedule-insns2 -fPIC \
287                            -force_cpusubtype_ALL"
288    set clang_flags         "-O3 -arch ppc -fPIC"
289
290    set gvct_flag           "-maltivec -mabi=altivec"
291    set cvct_flag           "-maltivec"
292   
293    configure.args-append   -A 4
294
295    # On Leopard, we may warn the user that ppc
296    # is not as efficient as ppc64
297    pre-fetch {
298        if {${native_arch} == "ppc64"} {
299
300                ui_msg "Compiling for ppc on a G5 machine.\
301                        This could lead to reduced performance."
302        }
303    }
304
305} else {
306
307    # PPC64
308    set gcc_flags           "-mcpu=970 -mtune=970 -mvrsave -mpowerpc64\
309                            -fno-schedule-insns -fschedule-insns2 -fPIC \
310                            -force_cpusubtype_ALL"
311    # Clang has no PPC64 target so compile for PPC
312    set clang_flags         "-O3 -arch ppc -fPIC"
313
314    set gvct_flag           "-maltivec -mabi=altivec"
315    set cvct_flag           "-maltivec"
316}
317
318# Basic universal config
319# Advanced config (flags) is done during pre-configure phase
320
321if {${universal} == 1} {
322
323    configure.universal_args-delete         --disable-dependency-tracking
324
325    lappend merger_configure_args(ppc)      --cflags=-m32 \
326                                            -b 32 \
327                                            -A 4 \
328                                            -V 4 \
329                                            -s gas_ppc \
330                                            -Fa alg -force_cpusubtype_ALL
331
332    lappend merger_configure_args(ppc64)    --cflags=-m64 \
333                                            -b 64 \
334                                            -A 5 \
335                                            -V 4 \
336                                            -s gas_ppc \
337                                            -Fa alg -force_cpusubtype_ALL
338
339    lappend merger_configure_args(i386)     --cflags=-m32 \
340                                            -b 32 \
341                                            -A 22 \
342                                            -V 448 \
343                                            -t 2 \
344                                            -s gas_x86_32
345
346    lappend merger_configure_args(x86_64)   --cflags=-m64 \
347                                            -b 64 \
348                                            -s gas_x86_64
349}
350
351# Threading
352# If we run on a mono-processor machine (PPC), then disable threading
353
354if {![catch {sysctl hw.logicalcpu} result] && $result == 1} {
355
356    configure.args-append    -t 0
357    set no_threads  1
358} else {
359
360    set no_threads  0
361
362    # Threading relies on OpenMP if gcc compilers are selected
363    # Does not seem to work reliably. Disabled.
364    #if {${gcc_version} != 0} {
365
366        configure.args-append   -Si omp 0
367    #}
368}
369
370# Phases (moonlike)
371
372extract {
373    # extract Atlas and move to a consistent working directory name
374    system -W ${workpath}   "bunzip2 -dc ${distpath}/${atlasdist} | \
375                             gnutar --no-same-owner -xf -"
376    system  "mv ${workpath}/ATLAS ${workpath}/${name}-${version}"
377}
378
379post-patch {
380    if {${build_arch} == "ppc" || ${build_arch} == "ppc64"} {
381   
382        reinplace \
383        "s|cMVFLAGS=\\\\\"%s\\\\\"|cMVFLAGS=\\\\\"-force_cpusubtype_ALL\ %s\\\\\"|" \
384         ${worksrcpath}/include/atlas_mvtesttime.h
385    }
386
387    if {${no_threads} == 1} {
388        exec sed -i bak -E "/.*threads.*/d" ${worksrcpath}/Make.top
389    }
390}
391
392# Change the default compilers
393pre-configure {
394
395    # Inform user of selected C compiler
396    ui_msg "Selected C compiler: ${configure.cc}"
397
398    # Fortran stuff
399    set fortran [expr ! [variant_isset nofortran]]
400
401    # If we use clang, we must grasp a gfortran compiler to build
402    # Fortran sources (do not impact overall Atlas performance)
403
404    if {${use_clang} != "" && ${fortran} == 1} {
405
406        if {![variant_isset perf]} {
407            set gflist  [glob -noc ${prefix}/bin/gfortran-mp-4.*]
408            if {[llength ${gflist}] == 0} {
409
410                # No fortran compiler found, bail out
411                return -code error "Atlas could not detect any fortran compiler.\
412                                    If you really don’t need the fortran interface\
413                                    to be built, please use the +nofortran option,\
414                                    else install a fortran compiler (e.g. gcc4X)\
415                                    before building Atlas."
416            } else {
417
418                # Select most recent gfortran
419                global gcc_version
420
421                configure.f77   [lindex [lsort -dec ${gflist}] 0]
422                set gcc_version   \
423                [join [split [string range ${configure.f77} end-2 end] "."] ""]           
424            }
425        }
426    }
427
428    if {${fortran} == 1} {
429
430        # Output the F77 selected compiler
431        if {[variant_isset perf]} {
432            ui_msg "Using dragonegg-3.3-gfortran-mp-4.8 as Fortran compiler."
433        } else {
434            ui_msg "Selected F77 compiler: gfortran${gcc_version}"
435        }
436    } else {
437
438        # No Fortran
439        configure.args-append   --nof77
440    }
441   
442    # Now set the flags according to the compiler family chosen
443    # Also set “width” of the processor (32 or 64-bit)
444
445    if {${gcc_version} != 0} {
446        set libgccpath                  ${prefix}/lib/gcc${gcc_version}
447    }
448
449    # Some tweaks on the original source before universal build
450    # duplicates it
451    # Overrides goodgcc
452    reinplace -E "s|GOODGCC =.*|GOODGCC = ${configure.cc}\");|" \
453        ${worksrcpath}/CONFIG/src/SpewMakeInc.c
454
455    # Some further tweaks
456    reinplace    "s|cc=gcc|cc=${configure.cc}|g" \
457                    ${worksrcpath}/configure
458    reinplace    "s|-no-cpp-precomp||g" \
459                    ${worksrcpath}/CONFIG/src/atlcomp.txt
460               
461    # Non-universal builds
462    if {${universal} == 0} {
463
464        configure.args-append   -C acg ${configure.cc}
465       
466        # If we build for the CPU of the machine, use
467        # machine arch tuning (except on ppc)
468        # -march=natives supersedes -msse4.2 so disable it on AVX
469        # capable machines
470        if {${has_avx} == "no" && ${build_arch} != "ppc"} {
471
472            append gcc_flags    " -march=native"
473        }
474        append clang_flags  " -march=native"
475       
476        # AVX stuff. GCC compilers cannot use AVX instruction set because the
477        # system as(1) is outdated
478        # Clang 3.3 is fine
479
480        if {${has_avx} == "yes" && ${use_clang} == ""} {
481
482            # Force Core i1 arch for ASM kernels
483            ui_warn "GCC compilers on MacOS do not support AVX:\
484                    downgrading."
485            configure.args-append   -A 25
486        }
487       
488        if {${build_arch} == "ppc"} {
489       
490            # ppc uses altivec vectorizing unit
491            configure.args-append       -V 4
492        }
493
494        if {${use_clang} == ""} {
495
496            # GCC
497            configure.args-append       -F acg "'${gcc_flags} ${gvct_flag}'"
498
499            if {${fortran} == 1} {
500
501                configure.args-append   -C if ${configure.f77}
502                configure.args-append   -F if "'${gcc_flags} ${gvct_flag}'"
503                configure.args-append   -Ss f77lib \
504                                            ${libgccpath}/libgfortran.dylib
505            }
506            if {${build_arch} == "x86_64" || ${build_arch} == "ppc64"} {
507
508                configure.args-append   -b 64
509            } else {
510
511                configure.args-append   -b 32
512            }
513        } else {
514
515            # clang
516            if {[variant_isset perf]} {
517
518                append cvct_flag       " -march=native"
519                set gvct_flag           ${cvct_flag}
520            }
521            configure.args-append   -F acg  "'${clang_flags} ${cvct_flag}'"
522
523            if {${fortran} == 1} {
524
525                configure.args-append   -C if ${configure.f77}           
526                configure.args-append   -F if "'${gcc_flags} ${gvct_flag}'"
527                configure.args-append   -Ss f77lib \
528                                            ${libgccpath}/libgfortran.dylib
529            }
530
531            if {${build_arch} == "x86_64"} {
532
533                configure.args-append   -b 64
534            } else {
535
536                # Clang has no ppc64 target so ppc64 ➸ regular ppc (32 bit)
537                configure.args-append   -b 32
538            }
539        }
540       
541        # Create build directory
542        file mkdir ${worksrcpath}/build
543    } else {
544   
545        # Universal builds
546        foreach arch ${universal_archs_to_use} {
547           
548            # Init ‘universal’ flags
549            set gcc_univ_flags          ${gcc_flags}
550            set gvct_univ_flag          ${gvct_flag}
551            set clang_univ_flags        ${clang_flags}
552            set cvct_univ_flag          ${cvct_flag}
553            set gcc_supp_flags          ""
554            set clang_supp_flags        ""
555           
556            # We build for the native architecture
557            if {${arch} == ${native_arch} && ${build_arch} != "ppc"} {
558               
559                # Don’t add -march=native to a GCC build on an AVX
560                # machine because this flag overrides -msse4.2
561                if {${has_avx} == "no"} {
562               
563                    append gcc_supp_flags   "-march=native "
564                }
565                append clang_supp_flags     "-march=native "
566            }
567           
568            # Non-native targets. Apply a priori flags.
569
570            # Clamp i386 optimization to -sse3 in universal builds and
571            # forces clang/gcc to use -m32 flag
572            if {${arch} == "i386" && ${native_arch} != "i386"} {
573
574                set gvct_univ_flag      "-msse3"
575                set cvct_univ_flag      "-msse3"
576       
577                append gcc_supp_flags   "-m32"
578                append clang_supp_flags "-m32"
579            }
580           
581            # For x86_64 builds, be conservative and use only -ssse3
582            # Core2 CPU and SSE3 ASM kernels
583            if {${arch} == "x86_64" && ${native_arch} != "x86_64"} {
584           
585                set gvct_univ_flag      "-mssse3"
586                set cvct_univ_flag      "-mssse3"
587               
588                append gcc_supp_flags   "-m64"
589                append clang_supp_flags "-m64"
590               
591                lappend merger_configure_args("x86_64") -A 25 -V 448
592            }
593           
594            # ppc (on Intel or ppc64 machines)
595            if {${arch} == "ppc" && ${native_arch} != "ppc"} {
596           
597                set gcc_univ_flags      "-O3 -mcpu=7400 -mtune=7400\
598                                         -fno-schedule-insns -fschedule-insns2\
599                                         -fPIC"
600                set clang_univ_flags    "-O3 -arch ppc -fPIC"
601
602                set gvct_univ_flag      "-maltivec -mabi=altivec"
603                set cvct_univ_flag      "-maltivec"
604
605                append gcc_supp_flags   "-m32"
606                append clang_supp_flags "-m32"
607            }
608           
609            # ppc64 (only for gcc, for clang this is taken to be the
610            # same target as ppc)
611            if {${arch} == "ppc64" && ${native_arch} != "ppc64"} {
612           
613                set gcc_univ_flags      "-mcpu=970 -mtune=970 -mvrsave \
614                                         -mpowerpc64 -fno-schedule-insns\
615                                         -fschedule-insns2 -fPIC"
616                set clang_univ_flags    "-O3 -arch ppc -fPIC"
617
618                set gvct_univ_flag      "-maltivec -mabi=altivec"
619                set cvct_univ_flag      "-maltivec"
620
621                append gcc_supp_flags   "-m64"
622                append clang_supp_flags "-m64"
623            }
624           
625            # Now add the flags to merger_configure_args(${arch})
626            # Same code as the non-universal case
627            lappend merger_configure_args(${arch})  -C acg ${configure.cc}
628            if {${use_clang} == ""} {
629       
630                # GCC
631                lappend merger_configure_args(${arch}) \
632                    -F acg "'${gcc_univ_flags} ${gcc_supp_flags}\
633                             ${gvct_univ_flag}'"
634           
635                if {${fortran} == 1} {
636           
637                    lappend merger_configure_args(${arch}) \
638                        -C if ${configure.f77} \
639                        -F if "'${gcc_univ_flags} ${gcc_supp_flags}\
640                                ${gvct_univ_flag}'"
641               
642                    set libgccarchpath    ${libgccpath}/${arch}
643                    if {[file exists ${libgccarchpath}/libgfortran.dylib]} {
644
645                        lappend merger_configure_args(${arch}) \
646                            -Ss f77lib ${libgccarchpath}/libgfortran.dylib
647                    } else {
648
649                        lappend merger_configure_args(${arch}) \
650                            -Ss f77lib ${libgccpath}/libgfortran.dylib
651                    }
652                }
653            } else {
654
655                # clang
656                lappend merger_configure_args(${arch}) \
657                    -F acg "'${clang_univ_flags} ${clang_supp_flags}\
658                             ${cvct_univ_flag}'"
659           
660                if {${fortran} == 1} {
661           
662                    lappend merger_configure_args(${arch}) \
663                        -C if ${configure.f77} \
664                        -F if "'${gcc_univ_flags} ${gcc_supp_flags}\
665                                ${gvct_univ_flag}'"
666               
667                    set libgccarchpath    ${libgccpath}/${arch}
668                    if {[file exists ${libgccarchpath}/libgfortran.dylib]} {
669
670                        lappend merger_configure_args(${arch}) \
671                            -Ss f77lib ${libgccarchpath}/libgfortran.dylib
672                    } else {
673
674                        lappend merger_configure_args(${arch}) \
675                            -Ss f77lib ${libgccpath}/libgfortran.dylib
676                    }
677                }
678            }
679           
680            # Remove spurious { } from arguments list
681            set merger_configure_args(${arch}) \
682                [join [split $merger_configure_args(${arch}) "{}"]]
683               
684            # Create ${arch} build tree
685            copy ${workpath}/${name}-${version} \
686                ${workpath}/${name}-${version}-${arch}
687            file mkdir ${workpath}/${name}-${version}-${arch}/build
688        }
689    }
690   
691    # On PPC64 we need extra flags for configuring
692    if {${native_arch} == "ppc64"} {
693        configure.args-append   --cc="\"${configure.cc} -m32 \
694                                 -force_cpusubtype_ALL\""
695    }
696
697    # Get some system specific variables for maximum optimization
698    set cpufreq [expr {[sysctl hw.cpufrequency] / 1000000}]
699
700    if {${os.arch} == "powerpc"} {
701
702        configure.args-append    -D c -DWALL
703    } else {
704
705        configure.args-append    -D c -DPentiumCPS=${cpufreq}
706    }   
707}
708
709# We configure from the build directory
710configure.dir            ${worksrcpath}/build
711configure.cmd            ../configure
712
713post-configure {
714
715    # Store in ${atlas_paths} the ${worksrcpath}s corresponding to the
716    # archs Atlas is being built for.
717    set     atlas_paths {}
718    if {${universal} == 1} {
719
720        foreach arch ${universal_archs_to_use} {
721
722            lappend atlas_paths ${workpath}/${name}-${version}-${arch}
723        }
724    } else {
725
726        lappend atlas_paths ${worksrcpath}
727    }
728
729    foreach path ${atlas_paths} {
730
731        # Recursively remove directories
732        ui_debug    "Patch to recursively remove directories on clean."
733        reinplace   "s|rm -f|rm -rf|g" ${path}/build/Makefile
734
735        # Threading — ensure libgomp is correctly pulled in during link
736        #if {${gcc_version} != 0 && ${no_threads} == 0} {
737
738        #   set gmpfx    ${prefix}/lib/gcc${gcc_version}
739        #   set arch     [lindex [split [lindex [split $path "/"] end] "-"] 2]
740        #   if {${arch} != "" && \
741        #       [file exists ${gmpfx}/${arch}/libgomp.dylib]} {
742
743        #      reinplace -E \
744        #          "s|(LIBS =.*)|\\1 ${gmpfx}/${arch}/libgomp.dylib|" \
745        #          ${path}/build/Make.inc
746        #  } else {
747
748        #     reinplace -E \
749        #         "s|(LIBS =.*)|\\1 ${gmpfx}/libgomp.dylib|" \
750        #         ${path}/build/Make.inc
751        # }
752        #}
753    }
754}
755
756build.env-append        "CC=${configure.cc} CXX=${configure.cxx}"
757use_parallel_build      no
758build.target            build
759build.dir               ${worksrcpath}/build
760
761post-build {
762    if {${universal} == 0} {
763
764        set libdir ${build.dir}/lib
765        reinplace "s|^LIBTOOL=.*$|LIBTOOL=\$\(GCC\) \$\(GCCFLAGS\)|" \
766            ${libdir}/Makefile
767        reinplace "s|-dynamic|-dynamiclib|g" ${libdir}/Makefile
768
769        # On mono-processors machines, build libsatlas.dylib only
770        if {${no_threads} == 1} {
771
772            system -W ${libdir} "${build.cmd} dylib"
773        } else {
774
775            system -W ${libdir} "${build.cmd} shared_all"
776        }
777    } else {
778
779        foreach arch ${universal_archs_to_use} {
780
781            set libdir ${workpath}/${name}-${version}-${arch}/build/lib
782            reinplace "s|^LIBTOOL=.*$|LIBTOOL=\$\(GCC\) \$\(GCCFLAGS\)|" \
783                ${libdir}/Makefile
784            reinplace "s|dynamic|dynamiclib|g" ${libdir}/Makefile
785
786            # Same as above
787            if {${no_threads} == 1} {
788
789                system -W ${libdir} "${build.cmd} dylib"
790            } else {
791
792                system -W ${libdir} "${build.cmd} shared_all"
793            }
794        }
795    }
796}
797
798destroot.dir          ${build.dir}
799destroot.destdir      DESTDIR=${destroot}${prefix}
800
801post-destroot {
802    # On monoprocessor machines, make tatlas and satlas synonymous
803    if {${no_threads} == 1} {
804
805        set libdir ${destroot}${prefix}/lib
806        system -W ${libdir} "ln -s libsatlas.dylib libtatlas.dylib"
807    }
808}
809
810livecheck.name        math-atlas
811livecheck.distname    Stable
Note: See TracBrowser for help on using the repository browser.