# $Id: Portfile 66888 2010-04-24 20:30:12Z ryandesign@macports.org $

PortSystem 1.0

name            netpbm
version         10.26.64
categories      graphics
maintainers     mas openmaintainer
description     Image manipulation
long_description \
    A whole bunch of utilities for primitive manipulation \
    of graphic images.  Wide array of converters from one \
    graphics format to another.  E.g. from g3 fax format to \
    jpeg.  Many basic graphics editing tools such as \
    magnifying and cropping.

homepage        http://netpbm.sourceforge.net/
master_sites    sourceforge:netpbm
platforms       darwin freebsd linux
# Parallel building is not reliable in netpbm 10.26.x.
# This has been fixed for the next major release of netpbm.
# See http://trac.macports.org/ticket/17516#comment:7
# If you're thinking about enabling parallel build in the Portfile,
# please make sure to test it on OS X 10.4 as well!  Thanks!
use_parallel_build  no

# See http://trac.macports.org/ticket/21240
universal_variant no

depends_build   path:bin/perl:perl5

depends_lib     port:zlib port:jpeg port:tiff \
                port:libpng port:jasper
extract.suffix  .tgz

checksums       md5     a895f002d8e20bc68d003ee772db76f1 \
                sha1    1518d6268a35a208b1df557d6e193236d2ec56f8 \
                rmd160  c3e922aaec320a5692fb0d71b5e34303d9dc2f9f

patchfiles      patch-lib-Makefile.diff patch-pm_config.in.h.diff \
                patch-jpeg7.diff

post-patch {
    reinplace "s|@@PREFIX@@|${prefix}|g" ${worksrcpath}/pm_config.in.h
}

configure.optflags -O3

configure {
    file copy ${worksrcpath}/Makefile.config.in ${worksrcpath}/Makefile.config
    reinplace "s|^CC =.*\$|CC = ${configure.cc}|" ${worksrcpath}/Makefile.config
    #if {[variant_isset universal]} {
    #    reinplace "s|^#CFLAGS =.*\$|CFLAGS = ${configure.cppflags} ${configure.cflags} ${configure.universal_cflags}|" ${worksrcpath}/Makefile.config
    #    reinplace "s|^#LDFLAGS +=.*\$|LDFLAGS = ${configure.ldflags} ${configure.universal_ldflags}|g" ${worksrcpath}/Makefile.config
    #} else {
        reinplace "s|^#CFLAGS =.*\$|CFLAGS = ${configure.cppflags} ${configure.cflags} ${configure.cc_archflags}|" ${worksrcpath}/Makefile.config
        reinplace "s|^#LDFLAGS +=.*\$|LDFLAGS = ${configure.ldflags} ${configure.cc_archflags}|g" ${worksrcpath}/Makefile.config
    #}
    reinplace "s|^CFLAGS_SHLIB =.*\$|CFLAGS_SHLIB = -fno-common|" ${worksrcpath}/Makefile.config
    reinplace "s|^TIFFLIB =.*\$|TIFFLIB = -ltiff|" ${worksrcpath}/Makefile.config
    reinplace "s|^JPEGLIB =.*\$|JPEGLIB = -ljpeg|" ${worksrcpath}/Makefile.config
    reinplace "s|^PNGLIB =.*\$|PNGLIB = -lpng|" ${worksrcpath}/Makefile.config
    reinplace "s|^ZLIB =.*\$|ZLIB = -lz|" ${worksrcpath}/Makefile.config
    reinplace "s|^JASPERHDR_DIR =.*\$|JASPERHDR_DIR = ${prefix}/include|" ${worksrcpath}/Makefile.config
}

platform darwin {
    post-configure {
        set ldshlib "${configure.ldflags} -dynamiclib -install_name ${prefix}/lib/libnetpbm.\$(MAJ).dylib -compatibility_version \$(MAJ) -current_version ${version}"
        reinplace "s|^NETPBMLIBTYPE =.*\$|NETPBMLIBTYPE = dylib|" ${worksrcpath}/Makefile.config
        reinplace "s|^NETPBMLIBSUFFIX =.*\$|NETPBMLIBSUFFIX = dylib|" ${worksrcpath}/Makefile.config
        reinplace "s|^LDSHLIB =.*\$|LDSHLIB = ${ldshlib}|" ${worksrcpath}/Makefile.config
        reinplace "s|^JASPERLIB =.*\$|JASPERLIB = -ljasper|" ${worksrcpath}/Makefile.config
    }
}

platform linux {
    post-configure {
        set ldshlib {-shared -Wl,-soname,$(SONAME)}
        reinplace "s|^NETPBMLIBTYPE =.*\$|NETPBMLIBTYPE = unixshared|" ${worksrcpath}/Makefile.config
        reinplace "s|^NETPBMLIBSUFFIX =.*\$|NETPBMLIBSUFFIX = so|" ${worksrcpath}/Makefile.config
        reinplace "s|^LDSHLIB =.*\$|LDSHLIB = ${ldshlib}|" ${worksrcpath}/Makefile.config
        reinplace "s|^JASPERLIB =.*\$|JASPERLIB = -ljasper|" ${worksrcpath}/Makefile.config
        reinplace "s|^LDRELOC =.*\$|LDRELOC = ld --reloc|" ${worksrcpath}/Makefile.config
        reinplace "s|^LINKER_CAN_DO_EXPLICIT_LIBRARY =.*\$|LINKER_CAN_DO_EXPLICIT_LIBRARY = Y|" ${worksrcpath}/Makefile.config
    }
}

platform freebsd {
    post-configure {
        set ldshlib {glibtool --mode=link gcc}
        reinplace "s|^NETPBMLIBTYPE =.*\$|NETPBMLIBTYPE = unixshared|" ${worksrcpath}/Makefile.config
        reinplace "s|^NETPBMLIBSUFFIX =.*\$|NETPBMLIBSUFFIX = so|" ${worksrcpath}/Makefile.config
        reinplace "s|^LDSHLIB =.*\$|LDSHLIB = ${ldshlib}|" ${worksrcpath}/Makefile.config
        reinplace "s|^JASPERLIB =.*\$|JASPERLIB = ${prefix}/lib/libjasper.la|" ${worksrcpath}/Makefile.config
    }
    patchfiles-append patch-libopt.c.diff
    depends_build port:libtool
}

build.args    "messages=yes"
build.target  ""
build.type    gnu

destroot.target   package
destroot.destdir  pkgdir=${destroot}${prefix}

pre-destroot {
    file delete -force ${destroot}${prefix}
}

post-destroot {
    xinstall -m 755 -d ${destroot}${prefix}/share/netpbm
    eval move ${destroot}${prefix}/bin/doc.url [glob ${destroot}${prefix}/misc/*] ${destroot}${prefix}/share/netpbm
    move ${destroot}${prefix}/man ${destroot}${prefix}/share/
     move ${destroot}${prefix}/link/libnetpbm.a ${destroot}${prefix}/lib

    eval delete [glob -type f -directory ${destroot}${prefix} *]

    foreach old_library {pbm pgm pnm ppm} {
        ln -s libnetpbm.dylib ${destroot}${prefix}/lib/lib${old_library}.dylib
    }
}

# work around bug in Apple's gcc build 4061
platform darwin 8 {
    pre-configure {
        set fl [open "| ${configure.cc} --version"]
        set data [read $fl]
        close $fl
        if {[regexp "build 4061" ${data}]} {
            ui_msg "On Mac OS X ${macosx_version}, ${name} ${version} does not work with gcc version \"${data}\"."
            return -code error "incompatible gcc version"
        }
    }
}

livecheck.type      regex
livecheck.url       http://sourceforge.net/projects/${name}/files/
livecheck.regex     ${name}-(\[0-9.\]+)${extract.suffix}
