mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
177 lines
6.1 KiB
Tcl
177 lines
6.1 KiB
Tcl
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
|
|
|
|
PortSystem 1.0
|
|
PortGroup legacysupport 1.0
|
|
|
|
name freeimage
|
|
version 3.18.0
|
|
revision 0
|
|
checksums rmd160 b791715fccf49355a3cb27b6250d8ed809c2454e \
|
|
sha256 f41379682f9ada94ea7b34fe86bf9ee00935a3147be41b6569c9605a53e438fd \
|
|
size 7415716
|
|
|
|
set major [lindex [split ${version} .] 0]
|
|
categories graphics
|
|
platforms macosx
|
|
license {FreeImage-1 GPL-2 GPL-3}
|
|
|
|
maintainers nomaintainer
|
|
|
|
description Library for FreeImage, a dependency-less graphics library
|
|
|
|
long_description FreeImage is a library for developers who would like to \
|
|
support most popular graphics image formats. Some \
|
|
highlights are: extremely simple in use, not limited to \
|
|
the local PC (unique FreeImageIO) and Plugin driven!
|
|
|
|
homepage https://freeimage.sourceforge.io
|
|
master_sites sourceforge:project/freeimage/Source%20Distribution/${version}
|
|
|
|
distname FreeImage[strsed ${version} {g/\.//}]
|
|
use_zip yes
|
|
worksrcdir FreeImage
|
|
|
|
patchfiles patch-c99-fixes.diff
|
|
patchfiles-append patch-pngpriv.h.diff
|
|
patchfiles-append patch-zutil.h.diff
|
|
# https://github.com/AcademySoftwareFoundation/openexr/pull/126
|
|
patchfiles-append patch-fix-ImfFastHuf.diff
|
|
# https://sourceforge.net/p/freeimage/patches/153
|
|
patchfiles-append patch-fix-PluginBMP.diff \
|
|
patch-fix-PluginDDS.diff
|
|
|
|
post-patch {
|
|
set makefiles "${worksrcpath}/Makefile.fip ${worksrcpath}/Makefile.gnu"
|
|
|
|
# Libraries extension is ".dylib" on Darwin, not ".so"
|
|
reinplace {s/\.so/.dylib/} {*}${makefiles}
|
|
|
|
# A dot separates the library name from its version on Darwin
|
|
reinplace /^SHAREDLIB/s/-/./ {*}${makefiles}
|
|
|
|
# Use libtool(1) instead of ar(1)
|
|
reinplace {s/\$(AR) r/libtool -o/} {*}${makefiles}
|
|
|
|
# Do not force installation as root
|
|
reinplace {s/-o root -g root//} {*}${makefiles}
|
|
|
|
# Darwin requires different arguments to build dynamic libraries
|
|
reinplace {s|-shared -Wl,-soname,$(VERLIBNAME)|-dynamiclib -install_name $(PREFIX)/lib/$(VERLIBNAME) -compatibility_version $(VER_MAJOR) -current_version $(VER_MAJOR).$(VER_MINOR)|} {*}${makefiles}
|
|
|
|
# Introduce HAVE_UNISTD_H to avoid C99 issues in zlib.
|
|
reinplace {s/-D__ANSI__/-D__ANSI__ -DHAVE_UNISTD_H/} {*}${makefiles}
|
|
|
|
# Use CXX not CC to link the library, since it is made up of C++ code.
|
|
reinplace {/\$(LIBRARIES)/s/$(CC)/$(CXX)/} {*}${makefiles}
|
|
|
|
# Do not hardcode a C++ library name. We set this later in CXX.
|
|
reinplace /^LIBRARIES/s/-lstdc++// {*}${makefiles}
|
|
|
|
# Darwin does not have a command ldconfig
|
|
reinplace s/ldconfig// ${worksrcpath}/Makefile.gnu
|
|
# FreeImagePlus doesn't use ldconfig
|
|
}
|
|
|
|
use_configure no
|
|
|
|
platform darwin i386 {
|
|
# uses cpuid function
|
|
# https://trac.macports.org/ticket/60624
|
|
compiler.blacklist-append *gcc-3.* *gcc-4.*
|
|
}
|
|
|
|
# In the future, implement in the build phase?
|
|
#configure.pipe no
|
|
#configure.ccache no
|
|
#configure.distcc no
|
|
|
|
# FreeImage uses -O3, which is set in the Makefiles
|
|
configure.optflags-delete -Os
|
|
|
|
# Not using any MacPorts libraries.
|
|
configure.cppflags-delete -I${prefix}/include
|
|
configure.ldflags-delete -L${prefix}/lib
|
|
|
|
# Disable ARM optimizations in bundled libpng because the source files
|
|
# that contain the ARM optimization code were not included.
|
|
if {"arm64" in [get_canonical_archs]} {
|
|
configure.cppflags-append -DPNG_ARM_NEON_OPT=0
|
|
}
|
|
|
|
variant universal {}
|
|
|
|
# Reimplement parts of portconfigure.tcl
|
|
if {[string match *clang* ${configure.cxx}] && ${configure.cxx_stdlib} ne ""} {
|
|
configure.cxxflags-append -stdlib=${configure.cxx_stdlib}
|
|
configure.ldflags-append -stdlib=${configure.cxx_stdlib}
|
|
}
|
|
|
|
if {${configure.sdkroot} ne ""} {
|
|
configure.ldflags-append -Wl,-syslibroot,${configure.sdkroot}
|
|
}
|
|
|
|
foreach flags {cflags cxxflags} compiler {cc cxx} {
|
|
configure.${flags}-append {*}[get_canonical_archflags ${compiler}]
|
|
|
|
if {${configure.sdkroot} ne ""} {
|
|
configure.${flags}-append -isysroot${configure.sdkroot}
|
|
}
|
|
|
|
if {${configure.march} ne "" } {
|
|
configure.${flags}-append -march=${configure.march}
|
|
}
|
|
|
|
if {${configure.mtune} ne "" } {
|
|
configure.${flags}-append -mtune=${configure.mtune}
|
|
}
|
|
}
|
|
|
|
# running build_main and destroot_main makes use of environment variables like MACOSX_DEPLOYMENT_TARGET
|
|
|
|
build {
|
|
foreach makefile {Makefile.gnu Makefile.fip} libname {libfreeimage libfreeimageplus} {
|
|
# Makefile overrides CFLAGS and CXXFLAGS, so append options to CC and CXX
|
|
build.args -f ${makefile} \
|
|
PREFIX=${prefix} \
|
|
VERLIBNAME=${libname}.${major}.dylib \
|
|
CC="${configure.cc} ${configure.cppflags} ${configure.cflags}" \
|
|
CXX="${configure.cxx} ${configure.cppflags} ${configure.cxxflags}" \
|
|
LDFLAGS="${configure.ldflags}"
|
|
|
|
portbuild::build_main
|
|
}
|
|
}
|
|
|
|
destroot {
|
|
foreach makefile {Makefile.gnu Makefile.fip} libname {libfreeimage libfreeimageplus} {
|
|
destroot.args -f ${makefile} \
|
|
PREFIX="${prefix}" \
|
|
VERLIBNAME=${libname}.${major}.dylib \
|
|
INCDIR="${destroot}${prefix}/include" \
|
|
INSTALLDIR="${destroot}${prefix}/lib"
|
|
|
|
portdestroot::destroot_main
|
|
}
|
|
}
|
|
|
|
post-destroot {
|
|
set docdir ${prefix}/share/doc/${name}
|
|
xinstall -d ${destroot}${docdir}
|
|
xinstall -m 644 -W ${worksrcpath} Whatsnew.txt license-fi.txt \
|
|
license-gplv2.txt license-gplv3.txt ${destroot}${docdir}
|
|
copy ${worksrcpath}/Examples ${destroot}${docdir}/examples
|
|
}
|
|
|
|
test.run yes
|
|
test.cmd ${build.cmd} && ./testAPI
|
|
test.dir ${worksrcpath}/TestAPI
|
|
test.target
|
|
|
|
post-patch {
|
|
# Use correct compiler and flags when compiling test
|
|
reinplace "s:g++:${configure.cxx} ${configure.cxxflags}:" ${test.dir}/Makefile
|
|
}
|
|
|
|
livecheck.type regex
|
|
livecheck.regex {FreeImage (\d+(?:\.\d+)*) released}
|