alternative from mk/jpeg.buildlink3.mk
This allows selection of an alternative jpeg library (namely the x86 MMX,
SSE, SSE2 accelerated libjpeg-turbo) via JPEG_DEFAULT=libjpeg-turbo, and
follows the current standard model for alternatives (fam, motif, fuse etc).
The mechanical edits were applied via the following script:
#!/bin/sh
for d in */*; do
[ -d "$d" ] || continue
for i in "$d/"Makefile* "$d/"*.mk; do
case "$i" in *.orig|*"*"*) continue;; esac
out="$d/x"
sed -e 's;graphics/jpeg/buildlink3\.mk;mk/jpeg.buildlink3.mk;g' \
-e 's;BUILDLINK_PREFIX\.jpeg;JPEGBASE;g' \
< "$i" > "$out"
if cmp -s "$i" "$out"; then
rm -f "$out"
else
echo "Edited $i"
mv -f "$i" "$i.orig" && mv "$out" "$i"
fi
done
done
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
USE_TOOLS and any of "autoconf", "autoconf213", "automake" or
"automake14". Also, we don't need to call the auto* tools via
${ACLOCAL}, ${AUTOCONF}, etc., since the tools framework takes care
to symlink the correct tool to the correct name, so we can just use
aclocal, autoconf, etc.
1.0.9 (jan 30th 2005)
---------------------
in short:
New optimizations save over 20KB on footprint.
Also a few bugfixes and several patches.
Thanks to those sending in their additions and for testing!
To turn on the optimizations do:
#DEFINE MNG_OPTIMIZE_CHUNKINITFREE
#DEFINE MNG_OPTIMIZE_OBJCLEANUP
#DEFINE MNG_OPTIMIZE_CHUNKASSIGN
#DEFINE MNG_OPTIMIZE_CHUNKREADER
(eg. they're not on by default (yet) !)
-------------------
bugfixes:
- fixed chunk pushing mechanism
- fixed bug in writing sBIT for indexed color
- fixed PPLT getchunk/putchunk routines
- fixed MNG_NO_1_2_4BIT_SUPPORT for TBBN1G04.PNG
- cleaned up macro-invocations (thanks to D. Airlie)
core:
- added more SKIPCHUNK conditionals
- replaced MNG_TWEAK_LARGE_FILES with permanent solution
- improved handling of cheap transparency when 16-bit support is disabled
- added some MNG_SUPPORT_WRITE conditionals
- added function to retrieve current FRAM delay
- added MNG_NO_1_2_4BIT_SUPPORT
- added bgr565_a8 canvas-style (thanks to J. Elvander)
- standard windows dll upgraded to zlib 1.2.2
- added LITTLEENDIAN/BIGENDIAN fixtures (thanks J.Stiles)
- inclusion of zlib/lcms/ijgsrc6b with <> instead of ""
- added conditional MNG_OPTIMIZE_CHUNKINITFREE
- added conditional MNG_OPTIMIZE_OBJCLEANUP
- added conditional MNG_OPTIMIZE_CHUNKASSIGN
- added conditional MNG_OPTIMIZE_CHUNKREADER
- fixed problem with global PLTE/tRNS
samples:
contrib:
doc:
- patched jng & mng manual pages (Thanks Peter Breitenlohner)
makefiles:
autoconf:
- patched makefile.am & configure.in (Thanks Peter Breitenlohner)
because old (or wrong) versions may be used or the tool may be missing
(such as not in path).
When not in path, you may receive errors like:
sh: autom4te: not found
aclocal-1.9: autom4te failed with exit status: 1
(noticed under Solaris)
Or if wrong versions are used, you may receive:
autom4te: unknown language: Autoconf-without-aclocal-m4
aclocal-1.9: autom4te failed with exit status: 1
(noticed under Mac OS X)
Maybe the correct fix would be to fix the pkgsrc-installed
aclocal and automake scripts so that the autom4te and autoconf
scripts used from within are using the correct path and version
(as also installed from pkgsrc).
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
All library names listed by *.la files no longer need to be listed
in the PLIST, e.g., instead of:
lib/libfoo.a
lib/libfoo.la
lib/libfoo.so
lib/libfoo.so.0
lib/libfoo.so.0.1
one simply needs:
lib/libfoo.la
and bsd.pkg.mk will automatically ensure that the additional library
names are listed in the installed package +CONTENTS file.
Also make LIBTOOLIZE_PLIST default to "yes".
bugfixes:
* fixed problem with PAST usage where source > dest
core:
* added missing get-/put-chunk-jdaa
* added CRC existence & checking flags
* added data-push mechanisms for specialized decoders
* some speed optimizations (thanks to John Stiles)
* defend against using undefined closestream function
* defend against using undefined openstream function
* added check for extreme chunk-lengths
* change worst-case iAlphadepth to 1 for standalone PNGs
* added support for 3+byte pixelsize for JPEG's
* added conditional to allow easier writing of large MNG's
bugfixes:
- fixed inclusion of IJNG chunk for non-JNG use (J.S)
- fixed bug in chunk-storage of SHOW chunk (where from == to)
- fixed bug in promote_g8_g8 with 16bit support off
core:
- added CANVAS_RGB565 and CANVAS_BGR565 (big thanx to Raphael Assenat!!)
- added CANVAS_RGBA565 and CANVAS_BGRA565 ( -- ditto -- )
- upgraded to zlib 1.2.1
- upgraded to lcms 1.11
- added premultiplied alpha canvas' for RGBA, ARGB, ABGR (thx to John Stiles)
- more optimizations with 16bit support off
- put conditionals around openstream/closestream callbacks.
- fixed typo (MNG_SKIPCHUNK_SAVE -> MNG_SKIPCHUNK_nEED)
- fixed some 64-bit platform compiler warnings
Changes 1.0.6:
core:
- added support for reducing the footprint of libmng by macros that optionally
skip unused chunks, remove 16-bit sample support, remove Delta support, and
remove JNG support, to accomodate Mozilla/Firebird.
- further optional removal of unused functions
- added MNG_NO_SUPPORT_FUNCQUERY conditional
- added iPNGdepth member to pData structure
- added conditionals around MAGN chunk support
- added conditionals around non-VLC chunk support
- added conditionals around "mng_display_go*" and other unused functions
- added more conditionals around "promote" functions
- removed email references as appropriate
by moving the inclusion of buildlink3.mk files outside of the protected
region. This bug would be seen by users that have set PREFER_PKGSRC
or PREFER_NATIVE to non-default values.
BUILDLINK_PACKAGES should be ordered so that for any package in the
list, that package doesn't depend on any packages to the left of it
in the list. This ordering property is used to check for builtin
packages in the correct order. The problem was that including a
buildlink3.mk file for <pkg> correctly ensured that <pkg> was removed
from BUILDLINK_PACKAGES and appended to the end. However, since the
inclusion of any other buildlink3.mk files within that buildlink3.mk
was in a region that was protected against multiple inclusion, those
dependencies weren't also moved to the end of BUILDLINK_PACKAGES.
the normal case when BUILDLINK_DEPENDS.<pkg> isn't specified, it receives
a value only once due to the multiple inclusion protection in the
bulldlink3.mk files. In the case where a package includes several
buildlink3.mk files that each want a slightly different version of another
dependency, having BUILDLINK_DEPENDS.<pkg> be a list allows for the
strictest <pkg> dependency to be matched.
1.0.5 (mar 1st 2003)
Only a small fix for progressive jpeg suspension problem.
This is the long-awaited final release containing the new 'dynamic MNG' feature
and bringing MNG compliance to near 100%!
1.0.5-rc3 (jan 20th 2003)
Minor bug-fixes and finalizing the accepted proposal (by official vote) for
the TERM/frame_delay changes on mng-list (nov-dec/2002).
1.0.5-rc2 (dec 9th 2002)
This contains fixes for a few minor details reported by the loyal testers.
It fixes some issues with the goframe/golayer/gotime processing and related
stuff. And it adds a way to disable playback-caching from within the MNG,
which is very useful for streaming-MNG encoders (such as gserver!).
1.0.5-rc1 (nov 1st 2002)
This fixes a few small problems and brings the TERM/MEND processing, with
respect to interframe_delay as per the current discussion on MNG-list,
up-to-date with the latest proposal.
1.0.5-b3 (oct 15th 2002)
Fairly quick after beta2, since that introduced a couple of unfortunate
booboo's and wasn't very workable. It also changes the standard configure
script to build a standard shared object similar to what I intended.
1.0.5-b2 (oct 9th 2002)
Second beta for next 1.0.5 release. This addresses some minor problems
detected during testing. It adds the proposed change to the MNG spec as
discussed on the "mng-list" recently; eg. Adam's option 4.
And it adds a little function to check at run-time if the lib is a beta or not.
1.0.5-b1 (sep 24th 2002)
First beta of a large maintenance release. This completes support of the MNG
specification to nearly 100% (PAST, PROM, delta-images, BACK image+tile).
It adds "dynamic" MNG and a few other neat routines as well as fixes several
bugs reported through SourceForge or to me directly.
buildlink2.mk files back into the main trunk. This provides sufficient
buildlink2 infrastructure to start merging other packages from the
buildlink2 branch that have already been converted to use the buildlink2
framework.
Provided in PR 15043 by Robert Elz.
"The changes appear to be mostly bug fixes - particularly some
memory leaks (at least from my point of view). If you've
ever done anything non trivial with an MNG, and see now big
things become, this might help."