Ignore:
Timestamp:
Dec 12, 2007, 6:52:41 PM (11 years ago)
Author:
mww@…
Message:

fix universal build, prepare 4-way universal build

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dports/devel/openssl/Portfile

    r30661 r31959  
    2525
    2626platform darwin {
    27         patchfiles      patch-Makefile.org patch-crypto-Makefile
     27        patchfiles      patch-Makefile.org patch-crypto-Makefile patch-Configure
    2828}
    2929
     
    3333platform darwin 6 {
    3434        depends_lib-append      port:dlcompat
    35 }
    36 
    37 platform darwin 8 {
    38         build.args      CC=/usr/bin/gcc-4.0
    3935}
    4036
     
    5248livecheck.regex ${name}-(0.9.8\[a-z\])
    5349
     50#make 4-way universal build ready
    5451variant universal {
    55    
    56 # port-specific procedure
    57     proc clean {} {
    58         system "make clean"
    59         foreach f [glob lib*.a lib*.*.*.*.dylib] {
    60             file delete ${f}
    61         }
    62     }
     52        post-patch {
     53#               foreach arch {i386 x86_64 ppc ppc64}
     54                foreach arch {i386 ppc} {
     55                        file copy ${worksrcpath} ${workpath}/${arch}
     56                }
     57        }
    6358
    64 # i386
    65     # configure
    66     pre-configure {
    67         system "./Configure darwin-i386-cc ${configure.pre_args} ${configure.args} && \
    68                 patch < ${filespath}/patch-Makefiles-universal-i386"
    69         reinplace "s|^PROCESSOR=.*|PROCESSOR=|" ${worksrcpath}/Makefile
    70     }
    71     # build
    72     configure {
    73         system "make"
    74     }
    75     # backup, clean up
    76     post-configure {
    77         # get list of files to be backed up - only needs to be done once
    78         fs-traverse file . {
    79           if {![string equal [string range [file tail $file] end-1 end] .o]} {
    80             set type [exec file -b $file]
    81             if {[regexp {(Mach-O|ar archive)} $type]} {
    82               global universal_filelist
    83               lappend universal_filelist $file
    84             }
    85           }
    86         }
     59        configure {
     60                foreach arch {i386 ppc} {
     61                        system "cd ${workpath}/${arch} && ./Configure darwin-${arch}-cc ${configure.pre_args} ${configure.args}"
     62                }
     63#               system "cd ${workpath}/x86_64 && ./Configure darwin64-x86_64-cc ${configure.pre_args} ${configure.args}"
     64#               system "cd ${workpath}/ppc64 && ./Configure darwin64-ppc-cc ${configure.pre_args} ${configure.args}"
     65        }
    8766
    88         backup i386
     67        build {
     68#               foreach arch {i386 x86_64 ppc ppc64}
     69                foreach arch {i386 ppc} {
     70                        system "cd ${workpath}/${arch} && make all"
     71                }
     72        }
    8973
    90         clean
    91     }
    92 # ppc
    93     # configure
    94     pre-build {
    95         system "./Configure darwin-ppc-cc ${configure.pre_args} ${configure.args} && \
    96                 patch < ${filespath}/patch-Makefiles-universal-ppc"
    97     }
    98     # build
    99     build {
    100         system "make"
    101     }
    102     # backup
    103     post-build {
    104         # there's already a list of files to be backed up
     74        destroot {
     75# in port 1.7, just call:
     76#               merge "${workpath}/pre-dest"
     77# till then, do this:
     78#               foreach arch {i386 x86_64 ppc ppc64}
     79                foreach arch {i386 ppc} {
     80                        xinstall -d ${workpath}/pre-dest/${arch}
     81                        system "cd ${workpath}/${arch} && make install INSTALL_PREFIX=${workpath}/pre-dest/${arch} MANDIR=${prefix}/share/man"
     82                }
    10583
    106         global fileList
     84                set basepath "${workpath}/pre-dest/i386"
     85                fs-traverse file "${basepath}" {
     86                        set fpath [string range "${file}" [string length "${basepath}"] [string length "${file}"]]
     87                        if {${fpath} != ""} {
     88                                ui_debug ":: ${fpath}"
    10789
    108         backup ppc
     90                                switch -exact [file type "${basepath}${fpath}"] {
     91                                        directory {
     92                                                # just create directories
     93                                                ui_debug "-- dir:: ${fpath}"
     94                                                file mkdir "${destroot}${fpath}"
     95                                        }
     96                                        link {
     97                                                # copy symlinks (TODO: check if target matches)
     98                                                ui_debug "-- lnk:: ${fpath}"
     99                                                file copy "${basepath}${fpath}" "${destroot}${fpath}"
     100                                        }
     101                                        file {
     102                                                # treat files depending on their filetype
     103                                                ui_debug "-- file:: ${fpath}"
     104                                                set filetype [exec "/usr/bin/file" "-b" "${basepath}${fpath}"]
     105                                                switch -regexp ${filetype} {
     106                                                        Mach-O.* {
     107                                                                # Mach-O binaries get lipo-ed
     108                                                                ui_debug "Mach-O file -- lipo-ing"
     109#                                                               system "lipo -arch i386 ${workpath}/pre-dest/i386/${fpath} -arch x86_64 ${workpath}/pre-dest/x86_64/${fpath} -arch ppc ${workpath}/pre-dest/ppc/${fpath} -arch ppc64 ${workpath}/pre-dest/ppc64/${fpath} -create -output ${destroot}${fpath}"
     110                                                                system "lipo -arch i386 ${workpath}/pre-dest/i386/${fpath} -arch ppc ${workpath}/pre-dest/ppc/${fpath} -create -output ${destroot}${fpath}"
     111                                                        }
     112                                                        current\ ar\ archive {
     113                                                                # ar archives get lipo-ed
     114                                                                ui_debug "ar archive -- lipo-ing"
     115#                                                               system "lipo -arch i386 ${workpath}/pre-dest/i386/${fpath} -arch x86_64 ${workpath}/pre-dest/x86_64/${fpath} -arch ppc ${workpath}/pre-dest/ppc/${fpath} -arch ppc64 ${workpath}/pre-dest/ppc64/${fpath} -create -output ${destroot}${fpath}"
     116                                                                system "lipo -arch i386 ${workpath}/pre-dest/i386/${fpath} -arch ppc ${workpath}/pre-dest/ppc/${fpath} -create -output ${destroot}${fpath}"
     117                                                        }
     118                                                        default {
     119                                                                # unknown file types are copied IF they do not differ across ALL architectures -- if they do: This is an error!
     120                                                                ui_debug "unknown filetype: ${filetype}"
     121                                                                set differ1 [exec "/usr/bin/diff" "-q" "${workpath}/pre-dest/i386/${fpath}" "${workpath}/pre-dest/ppc/${fpath}"]
     122#                                                               set differ2 [exec "/usr/bin/diff" "-q" "${workpath}/pre-dest/i386/${fpath}" "${workpath}/pre-dest/x86_64/${fpath}"]
     123#                                                               set differ3 [exec "/usr/bin/diff" "-q" "${workpath}/pre-dest/i386/${fpath}" "${workpath}/pre-dest/ppc64/${fpath}"]
     124                                                                if {${differ1} != ""} {
     125                                                                        ui_debug "ERROR"
     126                                                                } else {
     127                                                                        ui_debug "files match, just copying"
     128                                                                        file copy "${basepath}${fpath}" "${destroot}${fpath}"
     129                                                                }
     130                                                        }
     131                                                }
     132                                        }
     133                                        default { ui_debug "serious error" }
     134                                }
     135                        }
     136                }
     137        }
     138}
    109139
    110         clean
    111     }
    112 
    113 # universal
    114     pre-destroot {
    115         global fileList
    116         system "make openssl.pc libssl.pc libcrypto.pc"
    117         lipo
    118         system "patch < ${filespath}/patch-Makefile-universal-install"
    119     }
    120     destroot.target     install_docs install_sw
    121 
    122     # the test suite can only be run *after* destrooting
    123     test.run            yes
    124     test.dir            ${worksrcpath}/test
    125     test.target         alltests
    126 }
     140# the test suite can only be run *after* destrooting
     141#    test.run            yes
     142#    test.dir            ${worksrcpath}/test
     143#    test.target         alltests
Note: See TracChangeset for help on using the changeset viewer.