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

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

Oops. Undo the commit to v 3.11.13

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