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

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

Fix bugs for ppc64 builds

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