# ChangeLog for dev-libs/mapm
# Copyright 2000-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/dev-libs/mapm/ChangeLog,v 1.7 2009/03/02 13:39:48 dev-zero Exp $

*mapm-4.9.5 (02 Mar 2009)

  02 Mar 2009; Tiziano Müller <dev-zero@gentoo.org>
  +files/4.9.5-missing_include.patch, +mapm-4.9.5.ebuild:
  Version bump (added fix to add #include <stdlib.h>, doing compilation
  manually since original script ignores LDFLAGS and doesn't set soname).

  31 Dec 2008; Jeremy Olexa <darkside@gentoo.org> mapm-4.9.2.ebuild:
  add ~amd64 kw, bug 253126

  13 Dec 2008; Diego E. Pettenò <flameeyes@gentoo.org> mapm-4.9.2.ebuild:
  Fail if the do* commands fail, rather than installing an empty package.

*mapm-4.9.2 (19 Aug 2006)

  17 Aug 2006; Stephanie Lockwood-Childs <wormo@gentoo.org> +metadata.xml,
  +mapm-4.9.2.ebuild:
  version bump, new version reported by David Somers (Bug #127534)

  24 Apr 2005; Michael Hanselmann <hansmi@gentoo.org> mapm-4.9.ebuild:
  Stable on ppc.

*mapm-4.9 (02 Feb 2004)

  02 Feb 2004; Mike Frysinger <vapier@gentoo.org> :
  Initial import.  Ebuild submitted by Donald Giuliano #39949.
