Changeset 100521


Ignore:
Timestamp:
Dec 14, 2012, 6:39:18 PM (7 years ago)
Author:
vince@…
Message:

Add a lot of patches to fix ppc builds. Add also OpenMP support
for gcc versions > 4.5. Fix some indentation issues (I know I
should not).

Location:
trunk/dports/math/atlas
Files:
4 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dports/math/atlas/Portfile

    r98544 r100521  
    88name                            atlas
    99version                         3.10.0
    10 revision                                                1
     10revision                        1
    1111
    1212# additional versions
     
    3232                                ${lapackdist}:lapack
    3333
    34 patchfiles                      patch-atlcomp_txt.diff
     34patchfiles                      patch-atlcomp_txt.diff \
     35                                patch-emit_mm_c.diff \
     36                                patch-Make_ttune.diff \
     37                                patch-ATL_DecAtomicCount_ppc_S.diff \
     38                                patch-ATL_cmm4x4x128_av_c.diff
    3539
    3640
     
    9296    if {[variant_isset clang] || [variant_isset dragonegg]} {
    9397   
    94                 pre-fetch {
    95                         return -code error "Use of Clang is disabled with this version of Xcode."
    96                 }
     98        pre-fetch {
     99            return -code error "Use of Clang is disabled with this version of Xcode."
     100        }
    97101    }
    98102   
     
    116120        # Defaults to gcc45
    117121        set                     gccversion 4.5
    118         default_variants                +gcc45
     122        default_variants        +gcc45
    119123    }
    120124   
     
    208212}
    209213
    210 # At this point, no threading for ppc/ppc64
    211 
    212214if {${build_arch} == "ppc" || ${build_arch} == "ppc64"} {
    213215
    214     configure.args-append       -t 0
     216    configure.args-append       -t 2
    215217}
    216218
     
    223225                                -Fa alg -fPIC
    224226
    225     configure.args-append       --cc='${configure.cc} -m32' \
     227    configure.args-append       --cc='${configure.cc} -m32 force_cpusubtype_ALL' \
    226228                                -A 4 \
    227229                                -Fa alg '-fPIC -m32 -force_cpusubtype_ALL'
     
    251253   
    252254        # Force Core i1 arch
    253                 pre-fetch {
    254                         ui_warn "GCC compilers on OS X do not support AVX instructions."
    255                 }
     255        pre-fetch {
     256            ui_warn "GCC compilers on OS X do not support AVX instructions."
     257        }
    256258        configure.args-append   -A 25
    257259    } else {
     
    271273                                            -b 32 \
    272274                                            -A 4 \
    273                                             -t 0 \
     275                                            -t 2 \
    274276                                            -s gas_ppc \
    275277                                            -Fa alg '-fPIC -m32 \
     
    279281                                            -b 64 \
    280282                                            -A 5 \
    281                                             -t 0 \
     283                                            -t 2 \
    282284                                            -s gas_ppc \
    283285                                            -Fa alg '-fPIC -m64 \
     
    296298}
    297299
     300# If we use gcc >= 46, add OpenMP support
     301
     302if {[info exists gccversion] && ${gccnumber} > 45} {
     303    configure.args-append                   -Si omp 1
     304}
     305
    298306
    299307extract {
     
    323331        reinplace "s|-MPFORTRAN-|${ff}|" ${worksrcpath}/CONFIG/src/probe_comp.c
    324332        reinplace "s|-MPPATH-|${prefix}/bin|" ${worksrcpath}/CONFIG/src/probe_comp.c
    325                 if {${build_arch} == "ppc"} {
    326 
    327                         reinplace "s|XXX|'${cc}' '-O3 -maltivec \
    328                                 -mabi=altivec -mcpu=7400 -mtune=7400 \
    329                                 -fno-schedule-insns \
    330                                 -fschedule-insns2'|" \
    331                                 ${worksrcpath}/CONFIG/src/atlcomp.txt
    332                 } elseif {${build_arch} == "ppc64"} {
    333 
    334                         reinplace "s|XXX|'${cc}' '-O3 -maltivec \
    335                                 -mabi=altivec -mcpu=970 -mtune=970 \
    336                                 -mvrsave -mpowerpc64 \
    337                                 -fno-schedule-insns \
    338                                 -fno-schedule-insns2'|" \
    339                                 ${worksrcpath}/CONFIG/src/atlcomp.txt
    340                 } else {
    341                
    342                         reinplace "s|XXX|'${cc}' '-fomit-frame-pointer \
     333        if {${build_arch} == "ppc"} {
     334
     335            reinplace "s|XXX|'${cc}' '-O3 -maltivec \
     336                    -mabi=altivec -mcpu=7400 -mtune=7400 \
     337                    -fno-schedule-insns \
     338                -fschedule-insns2'|" \
     339                ${worksrcpath}/CONFIG/src/atlcomp.txt
     340        } elseif {${build_arch} == "ppc64"} {
     341
     342            reinplace "s|XXX|'${cc}' '-O3 -maltivec \
     343                    -mabi=altivec -mcpu=970 -mtune=970 \
     344                    -mvrsave -mpowerpc64 \
     345                    -fno-schedule-insns \
     346                -fno-schedule-insns2'|" \
     347                ${worksrcpath}/CONFIG/src/atlcomp.txt
     348        } else {
     349       
     350            reinplace "s|XXX|'${cc}' '-fomit-frame-pointer \
    343351                -mfpmath=sse -msse3 -O2 -fno-schedule-insns2'|" \
    344                                 ${worksrcpath}/CONFIG/src/atlcomp.txt
    345                 }
     352                ${worksrcpath}/CONFIG/src/atlcomp.txt
     353        }
    346354    } else {
    347355        reinplace "s|XXX|'${cc}' '-Oz -fomit-frame-pointer'|" \
     
    349357    }
    350358
    351         # Forces goodgcc
    352 
    353         reinplace -E "s|GOODGCC =.*|GOODGCC = ${configure.cc}\");|" \
    354                 ${worksrcpath}/CONFIG/src/SpewMakeInc.c
     359    # Forces goodgcc
     360
     361    reinplace -E "s|GOODGCC =.*|GOODGCC = ${configure.cc}\");|" \
     362        ${worksrcpath}/CONFIG/src/SpewMakeInc.c
    355363   
    356364    # If we use clang, we must grasp a gfortran compiler to build
     
    387395
    388396        configure.args-append       -C if ${configure.f77}
    389                 set libgfbasepath                       ${prefix}/lib/gcc${gccnumber}
    390                 if {[variant_isset universal]} {
    391 
    392                         foreach arch ${universal_archs_to_use} {
    393 
    394                                 set libgfarchpath       ${libgfbasepath}/${arch}           
    395                                 if {[file exists ${libgfarchpath}/libgfortran.dylib]} {
    396 
    397                                         lappend merger_configure_args($arch) \
    398                                              -Ss f77lib ${libgfarchpath}/libgfortran.dylib
    399                                 } else {
     397        set libgfbasepath            ${prefix}/lib/gcc${gccnumber}
     398        if {[variant_isset universal]} {
     399
     400            foreach arch ${universal_archs_to_use} {
     401
     402                set libgfarchpath    ${libgfbasepath}/${arch}           
     403                if {[file exists ${libgfarchpath}/libgfortran.dylib]} {
     404
     405                    lappend merger_configure_args($arch) \
     406                         -Ss f77lib ${libgfarchpath}/libgfortran.dylib
     407                } else {
    400408               
    401                                         lappend merger_configure_args($arch) \
    402                                                 -Ss f77lib ${libgfbasepath}/libgfortran.dylib
    403                                 }
    404                         }
    405                 } else {
    406                
    407                         configure.args-append   -Ss f77lib ${libgfbasepath}/libgfortran.dylib
    408                 }
    409         }
    410 
    411         # Create build trees
     409                    lappend merger_configure_args($arch) \
     410                        -Ss f77lib ${libgfbasepath}/libgfortran.dylib
     411                }
     412            }
     413        } else {
     414       
     415            configure.args-append    -Ss f77lib ${libgfbasepath}/libgfortran.dylib
     416        }
     417    }
     418
     419    # Create build trees
    412420    if {[variant_isset universal]} {
    413421        foreach arch ${universal_archs_to_use} {
     
    433441    if {[variant_isset universal]} {
    434442        foreach arch ${universal_archs_to_use} {
    435                         file mkdir ${workpath}/${name}-${version}-${arch}/build
    436                 }
     443            file mkdir ${workpath}/${name}-${version}-${arch}/build
     444        }
    437445    } else {
    438446        file mkdir ${workpath}/${name}-${version}/build
     
    453461    }
    454462
    455    
    456463    foreach arch ${archs} {
    457464        if {![variant_isset universal]} {
     
    465472        # Recursively remove directories
    466473        ui_debug    "patch to recursively remove directories on clean"
    467         reinplace    "s|rm -f|rm -rf|g" ${atlas_path}/build/Makefile
    468        
     474        reinplace   "s|rm -f|rm -rf|g" ${atlas_path}/build/Makefile
     475       
     476        # Ensure libgomp is linked
     477        if {[info exists gccversion] && ${gccnumber} > 45} {
     478            reinplace -E "s|(LIBS =.*)|\\1 ${prefix}/lib/gcc${gccnumber}/libgomp.dylib|" \
     479                ${atlas_path}/build/Make.inc
    469480    }
    470481}
     
    476487
    477488post-build {
    478         if {! [variant_isset universal]} {
    479                 reinplace "s|^LIBTOOL=.*$|LIBTOOL=\$\(GCC\) \$\(GCCFLAGS\)|" \
    480                         ${build.dir}/lib/Makefile
    481                 reinplace "s|dynamic|dynamiclib|g" \
    482                         ${build.dir}/lib/Makefile
    483                 system "cd ${build.dir}/lib && ${build.cmd} shared_all"
    484         } else {
     489    if {! [variant_isset universal]} {
     490        reinplace "s|^LIBTOOL=.*$|LIBTOOL=\$\(GCC\) \$\(GCCFLAGS\)|" \
     491            ${build.dir}/lib/Makefile
     492        reinplace "s|dynamic|dynamiclib|g" \
     493            ${build.dir}/lib/Makefile
     494        system "cd ${build.dir}/lib && ${build.cmd} shared_all"
     495    } else {
    485496        foreach arch ${universal_archs_to_use} {
    486                         reinplace "s|^LIBTOOL=.*$|LIBTOOL=\$\(GCC\) \$\(GCCFLAGS\)|" \
    487                                 ${workpath}/${name}-${version}-${arch}/build/lib/Makefile
    488                         reinplace "s|dynamic|dynamiclib|g" \
    489                                 ${workpath}/${name}-${version}-${arch}/build/lib/Makefile
    490                         system "cd ${workpath}/${name}-${version}-${arch}/build/lib && \
    491                                         ${build.cmd} shared_all"
    492                 }
    493         }
    494 }
    495 
    496 destroot.dir            ${build.dir}
    497 destroot.destdir        DESTDIR=${destroot}${prefix}
     497            reinplace "s|^LIBTOOL=.*$|LIBTOOL=\$\(GCC\) \$\(GCCFLAGS\)|" \
     498                ${workpath}/${name}-${version}-${arch}/build/lib/Makefile
     499            reinplace "s|dynamic|dynamiclib|g" \
     500                ${workpath}/${name}-${version}-${arch}/build/lib/Makefile
     501            system "cd ${workpath}/${name}-${version}-${arch}/build/lib && \
     502                    ${build.cmd} shared_all"
     503        }
     504    }
     505}
     506
     507destroot.dir          ${build.dir}
     508destroot.destdir      DESTDIR=${destroot}${prefix}
    498509
    499510livecheck.name        math-atlas
Note: See TracChangeset for help on using the changeset viewer.