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

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

Disable AVX on FMA machines compiling with GCC 4.x

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