# ChangeLog for media-libs/libflash
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/media-libs/libflash/ChangeLog,v 1.16 2010/01/22 13:47:11 cla Exp $

  22 Jan 2010; Dawid Węgliński <cla@gentoo.org> libflash-0.4.10-r1.ebuild:
  Respect user CXXFLAGS (bug #240812)

  06 Mar 2007; Ryan Hill <dirtyepic@gentoo.org>
  files/libflash-0.4.10-gcc41.patch, libflash-0.4.10-r1.ebuild:
  External variables defined with both C and C++ linkage are regected in GCC
  4.1.2. Update GCC patch to cover this. Walter Meinl, bug #169517.

  22 Feb 2007; Piotr Jaroszyński <peper@gentoo.org> ChangeLog:
  Transition to Manifest2.

  15 Aug 2006; Stephanie Lockwood-Childs <wormo@gentoo.org>
  libflash-0.4.10-r1.ebuild:
  Update download link -- thanks to Håvard Wall (Bug #132414)

  14 Jan 2006; Mark Loeser <halcy0n@gentoo.org>
  +files/libflash-0.4.10-gcc41.patch, +metadata.xml,
  libflash-0.4.10-r1.ebuild:
  Add patch by Stefan Vunckx <stefan.vunckx AT skynet DOT be> to fix
  compilation with gcc-4.1; bug #118816. Also added metadata.xml
  with maintainer-needed

  27 Apr 2004; Aron Griffis <agriffis@gentoo.org> libflash-0.4.10-r1.ebuild:
  Add inherit eutils

  23 Nov 2003; Aron Griffis <agriffis@gentoo.org> libflash-0.4.10-r1.ebuild:
  Stable on alpha

  31 Aug 2003; <plasmaroo@gentoo.org> libflash-0.4.10-r1.ebuild:
  Removed inexistant dodoc items

  06 Dec 2002; Rodney Rees <manson@gentoo.org> : changed sparc ~sparc keywords
 
*libflash-0.4.10-r1 (23 August 2002)

  25 Mar 2003; Aron Griffis <agriffis@gentoo.org> libflash-0.4.10-r1.ebuild:
  Add ~alpha to KEYWORDS

  26 August 2002; Sascha Schwabbauer <cybersystem@gentoo.org> libflash-0.4.10-r1.ebuild :

  Added ppc to keywords.

*libflash-0.4.10-r1 (14 Jun 2002)

  14 Jun 2002; Doug Goldstein (Cardoe) <dougg@ufl.edu> libflash-0.4.10-r1.ebuild :
  
  Fixed some redundant stuff in the ebuild and the major thing is I included a patch
  that makes it actually compile with gcc3.1. The patch has no effect on gcc2.95 and 
  has been confirmed to compile on both platforms.

*libflash-0.4.10 (1 Feb 2002)

  1 Feb 2002; G.Bevin <gbevin@gentoo.org> ChangeLog :
  
  Added initial ChangeLog which should be updated whenever the package is
  updated in any way. This changelog is targetted to users. This means that the
  comments should well explained and written in clean English. The details about
  writing correct changelogs are explained in the skel.ChangeLog file which you
  can find in the root directory of the portage repository.
