diff --git a/app-doc/doxygen/Manifest b/app-doc/doxygen/Manifest
new file mode 100644
index 0000000..4e64d2d
--- /dev/null
+++ b/app-doc/doxygen/Manifest
@@ -0,0 +1,2 @@
+DIST doxygen-1.8.3.1.src.tar.gz 6196887 SHA256 0c749f68101b6c04ccb0d9696dd37836a6ba62cd8002add275058a975ee72b55 SHA512 365e553364ad61950a29477d8e751e98f4af9ce4a999c788cd25ce5a58ebbd931960689c4faddabd71cda60174777e41ed814ba633c19287c9f9696e0d7fa169 WHIRLPOOL cab6bbad971b794e07e95bee548ed9b9233b7b420dd96db8d4cb7b68a1b1232546c3976556b043e9a31c2e32e8619a57a0a7a58aa846a4806b9cc08aa1a9bc80
+DIST doxywizard.png 4231 SHA256 eb648ebd3a194a56d9ed6e47cc8dbf1af2e124d83c2c42af9bf86bd837984209 SHA512 5e2d26e7427b86866ebe75ec2c66c0f1100d230f3f3e4d66bac424a8dd0d42f0831d936ff03318dfa1bf73cbd9fb53717636d0c91ae3eea0f4e24641479d25d5 WHIRLPOOL bb0c13b382c4069ca310ff53a03b36499a2bf6e0e8c0647efc032530f429f483b5d6f2925b7e996d4f84c8f2b77eb883533f4b7abc88745a2cfa596d3dd4f3fb
diff --git a/app-doc/doxygen/doxygen-1.8.3.1.ebuild b/app-doc/doxygen/doxygen-1.8.3.1.ebuild
new file mode 100644
index 0000000..a327fb8
--- /dev/null
+++ b/app-doc/doxygen/doxygen-1.8.3.1.ebuild
@@ -0,0 +1,239 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-doc/doxygen/doxygen-1.8.3.1.ebuild,v 1.18 2013/09/05 19:44:49 mgorny Exp $
+
+EAPI=4
+
+PYTHON_COMPAT=( python{2_6,2_7} )
+inherit eutils fdo-mime flag-o-matic python-any-r1 qt4-r2 toolchain-funcs
+
+DESCRIPTION="Documentation system for most programming languages"
+HOMEPAGE="http://www.doxygen.org/"
+SRC_URI="http://ftp.stack.nl/pub/users/dimitri/${P}.src.tar.gz
+	http://dev.gentoo.org/~xarthisius/distfiles/doxywizard.png"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc dot qt4 latex elibc_FreeBSD userland_GNU"
+
+#missing SerbianCyrilic, JapaneseEn, KoreanEn, Chinesetraditional
+
+LANGS=(hy ar pt_BR ca zh cs de da eo es fa fi fr el hr hu id it ja ko lt mk
+nl nb pl pt ro ru sl sk sr sv tr uk vi af)
+for X in "${LANGS[@]}" ; do
+	IUSE="${IUSE} linguas_${X}"
+done
+
+RDEPEND="qt4? ( dev-qt/qtgui:4 )
+	latex? ( app-text/texlive[extra] )
+	dev-lang/perl
+	virtual/libiconv
+	media-libs/libpng
+	app-text/ghostscript-gpl
+	dot? (
+		media-gfx/graphviz
+		media-libs/freetype
+	)"
+
+DEPEND="sys-apps/sed
+	sys-devel/flex
+	sys-devel/bison
+	doc? ( ${PYTHON_DEPS} )
+	${RDEPEND}"
+
+RESTRICT="mirror"
+EPATCH_SUFFIX="patch"
+
+get_langs() {
+	# using only user set linguas also fixes #263641
+	my_linguas=()
+	for lingua in ${LINGUAS}; do
+		if has ${lingua} "${LANGS[@]}"; then
+			case ${lingua} in
+				hy) lingua=am ;;
+			    pt_BR) lingua=br ;;
+				zh*) lingua=cn ;;
+				cs) lingua=cz ;;
+				da) lingua=dk ;;
+				el*) lingua=gr ;;
+				ja*) lingua=jp ;;
+				ko) lingua=kr ;;
+				nb) lingua=no ;;
+				sl) lingua=si ;;
+			    tr*) lingua=tr ;;
+			    uk) lingua=ua ;;
+			    af) lingua=za ;;
+			esac
+			has ${lingua} "${my_linguas[@]}" ||
+				my_linguas+=(${lingua})
+		fi
+	done
+	f_langs="${my_linguas[@]}"
+	echo ${f_langs// /,}
+}
+
+pkg_setup() {
+	tc-export CC CXX
+	use doc && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+	# use CFLAGS, CXXFLAGS, LDFLAGS
+	export ECFLAGS="${CFLAGS}" ECXXFLAGS="${CXXFLAGS}" ELDFLAGS="${LDFLAGS}"
+
+	sed -i.orig -e 's:^\(TMAKE_CFLAGS_RELEASE\t*\)= .*$:\1= $(ECFLAGS):' \
+		-e 's:^\(TMAKE_CXXFLAGS_RELEASE\t*\)= .*$:\1= $(ECXXFLAGS):' \
+		-e 's:^\(TMAKE_LFLAGS_RELEASE\s*\)=.*$:\1= $(ELDFLAGS):' \
+		-e "s:^\(TMAKE_CXX\s*\)=.*$:\1= $(tc-getCXX):" \
+		-e "s:^\(TMAKE_LINK\s*\)=.*$:\1= $(tc-getCXX):" \
+		-e "s:^\(TMAKE_LINK_SHLIB\s*\)=.*$:\1= $(tc-getCXX):" \
+		-e "s:^\(TMAKE_CC\s*\)=.*$:\1= $(tc-getCC):" \
+		-e "s:^\(TMAKE_AR\s*\)=.*$:\1= $(tc-getAR) cqs:" \
+		tmake/lib/{{linux,gnu,freebsd,netbsd,openbsd,solaris}-g++,macosx-c++,linux-64}/tmake.conf \
+		|| die
+
+	# Ensure we link to -liconv
+	if use elibc_FreeBSD; then
+		for pro in */*.pro.in */*/*.pro.in; do
+		echo "unix:LIBS += -liconv" >> "${pro}"
+		done
+	fi
+
+	# Call dot with -Teps instead of -Tps for EPS generation - bug #282150
+	sed -i -e '/addJob("ps"/ s/"ps"/"eps"/g' src/dot.cpp || die
+
+	# prefix search tools patch, plus OSX fixes
+	epatch "${FILESDIR}"/${PN}-1.8.1-prefix-misc-alt.patch
+	epatch "${FILESDIR}"/${P}-empty-line-sigsegv.patch #454348
+
+	# fix final DESTDIR issue
+	sed -i.orig -e "s:\$(INSTALL):\$(DESTDIR)/\$(INSTALL):g" \
+		-e "s/all: Makefile.doxywizard/all:/g" \
+		addon/doxywizard/Makefile.in || die
+
+	# fix pdf doc
+	sed -i.orig -e "s:g_kowal:g kowal:" \
+		doc/maintainers.txt || die
+
+	# old value is not enough for codes written in modern Fortran
+	sed -i -e '/define MAX_INCLUDE_DEPTH/ s/10/20/g' \
+		src/fortranscanner.* || die
+
+	sed -e "s/\$(DATE)/$(LC_ALL="C" LANG="C" date)/g" \
+		-i Makefile.in || die #428280
+
+	if is-flagq "-O3" ; then
+		echo
+		ewarn "Compiling with -O3 is known to produce incorrectly"
+		ewarn "optimized code which breaks doxygen."
+		echo
+		elog "Continuing with -O2 instead ..."
+		echo
+		replace-flags "-O3" "-O2"
+	fi
+}
+
+src_configure() {
+	# set ./configure options (prefix, Qt based wizard, docdir)
+
+	local my_conf="--shared --enable-langs $(get_langs)"
+
+	if use debug ; then
+		my_conf="${my_conf} --debug"
+	else
+		my_conf="${my_conf} --release "
+	fi
+
+	use qt4 && my_conf="${my_conf} --with-doxywizard"
+
+	# On non GNU userland (e.g. BSD), configure script picks up make and bails
+	# out because it is not GNU make, so we force the right value.
+	use userland_GNU || my_conf="${my_conf} --make ${MAKE} --install install"
+
+	export LINK="${QMAKE_LINK}"
+	export LINK_SHLIB="${QMAKE_CXX}"
+
+	if use qt4 ; then
+		pushd addon/doxywizard &> /dev/null
+		eqmake4 doxywizard.pro -o Makefile.doxywizard
+		popd &> /dev/null
+	fi
+
+	./configure --prefix "${EPREFIX}/usr" ${my_conf} \
+			|| die
+}
+
+src_compile() {
+
+	emake CFLAGS+="${ECFLAGS}" CXXFLAGS+="${ECXXFLAGS}" \
+		LFLAGS+="${ELDFLAGS}" all
+
+	# generate html and pdf (if tetex in use) documents.
+	# errors here are not considered fatal, hence the ewarn message
+	# TeX's font caching in /var/cache/fonts causes sandbox warnings,
+	# so we allow it.
+	if use doc; then
+		if ! use dot; then
+			sed -i -e "s/HAVE_DOT               = YES/HAVE_DOT    = NO/" \
+				{Doxyfile,doc/Doxyfile} \
+				|| ewarn "disabling dot failed"
+		fi
+		if use latex; then
+			addwrite /var/cache/fonts
+			addwrite /var/cache/fontconfig
+			addwrite /usr/share/texmf/fonts/pk
+			addwrite /usr/share/texmf/ls-R
+			make pdf || ewarn '"make pdf docs" failed.'
+		else
+			cp doc/Doxyfile doc/Doxyfile.orig
+			cp doc/Makefile doc/Makefile.orig
+			sed -i.orig -e "s/GENERATE_LATEX    = YES/GENERATE_LATEX    = NO/" \
+				doc/Doxyfile
+			sed -i.orig -e "s/@epstopdf/# @epstopdf/" \
+				-e "s/@cp Makefile.latex/# @cp Makefile.latex/" \
+				-e "s/@sed/# @sed/" doc/Makefile
+			make docs || ewarn '"make docs" failed.'
+		fi
+	fi
+}
+
+src_install() {
+	emake DESTDIR="${D}" MAN1DIR=share/man/man1 install
+
+	if use qt4; then
+		doicon "${DISTDIR}/doxywizard.png"
+		make_desktop_entry doxywizard "DoxyWizard ${PV}" \
+			"/usr/share/pixmaps/doxywizard.png" \
+			"Development"
+	fi
+
+	dodoc INSTALL LANGUAGE.HOWTO README
+
+	# pdf and html manuals
+	if use doc; then
+		dohtml -r html/*
+		use latex && dodoc latex/doxygen_manual.pdf
+	fi
+}
+
+pkg_postinst() {
+	fdo-mime_desktop_database_update
+
+	elog
+	elog "The USE flags qt4, doc, and latex will enable doxywizard, or"
+	elog "the html and pdf documentation, respectively.  For examples"
+	elog "and other goodies, see the source tarball.  For some example"
+	elog "output, run doxygen on the doxygen source using the Doxyfile"
+	elog "provided in the top-level source dir."
+	elog
+	elog "Disabling the dot USE flag will remove the GraphViz dependency,"
+	elog "along with Doxygen's ability to generate diagrams in the docs."
+	elog "See the Doxygen homepage for additional helper tools to parse"
+	elog "more languages."
+	elog
+}
+
+pkg_postrm() {
+	fdo-mime_desktop_database_update
+}
diff --git a/app-doc/doxygen/files/doxygen-1.8.1-prefix-misc-alt.patch b/app-doc/doxygen/files/doxygen-1.8.1-prefix-misc-alt.patch
new file mode 100644
index 0000000..0ecaf4d
--- /dev/null
+++ b/app-doc/doxygen/files/doxygen-1.8.1-prefix-misc-alt.patch
@@ -0,0 +1,82 @@
+* make sure we always look for tools in the path, no "do it yourself paths"
+
+--- a/configure
++++ b/configure
+@@ -170,27 +170,15 @@
+       ;;
+     Darwin:*)
+       f_platform=macosx-c++
+-      if test "$f_insttool" = NO; then
+-        f_insttool=/usr/bin/install
+-      fi
+       ;;
+     FreeBSD:*)
+       f_platform=freebsd-g++
+-      if test "$f_insttool" = NO; then
+-        f_insttool=/usr/bin/install
+-      fi
+       ;;
+     NetBSD:*)
+       f_platform=netbsd-g++
+-      if test "$f_insttool" = NO; then
+-        f_insttool=/usr/bin/install
+-      fi
+       ;;
+     HP-UX:*)
+       f_platform=hpux-g++
+-      if test "$f_insttool" = NO; then
+-        f_insttool=/usr/bin/install
+-      fi
+       ;;
+     IRIX64:*)
+       f_platform=irix-64
+@@ -221,9 +209,6 @@
+       ;;
+     SunOS:5*)
+       f_platform=solaris-g++
+-      if test "$f_insttool" = NO; then
+-        f_insttool=/usr/bin/install
+-      fi
+       ;;
+     ULTRIX:*)
+       f_platform=ultrix-g++
+@@ -323,8 +308,8 @@
+ 
+ echo -n "  Checking for GNU install tool... "
+ if test "$f_insttool" = NO; then
+-  install_names="ginstall install"
+-  install_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin /usr/ucb"
++  install_names="install"
++  install_dirs="$bin_dirs"
+   install_prog=NO
+   install_found=NO
+   for i in $install_names; do
+@@ -360,7 +345,7 @@
+ 
+ echo -n "  Checking for dot (part of GraphViz)... "
+ if test "$f_dot" = NO; then
+-  dot_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin"
++  dot_dirs="$bin_dirs"
+   dot_prog=NO
+   for j in $dot_dirs; do
+     if test -x "$j/dot"; then
+@@ -382,7 +367,7 @@
+ echo -n "  Checking for perl... "
+ if test "$f_perl" = NO; then
+   perl_names="perl perl5"
+-  perl_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin"
++  perl_dirs="$bin_dirs"
+   perl_prog=NO
+   perl_found=NO
+   for i in $perl_names; do
+@@ -546,10 +531,6 @@
+   cat >> .tmakeconfig <<EOF
+     TMAKE_LFLAGS += -non_shared
+ EOF
+-  elif test "$f_platform" = "solaris-cc"; then
+-  cat >> .tmakeconfig <<EOF
+-    TMAKE_LFLAGS += -Bstatic
+-EOF
+   elif test "$f_platform" = "hpux-cc"; then
+   cat >> .tmakeconfig <<EOF
+     TMAKE_LFLAGS += -noshared
diff --git a/app-doc/doxygen/files/doxygen-1.8.3.1-empty-line-sigsegv.patch b/app-doc/doxygen/files/doxygen-1.8.3.1-empty-line-sigsegv.patch
new file mode 100644
index 0000000..4b51ce9
--- /dev/null
+++ b/app-doc/doxygen/files/doxygen-1.8.3.1-empty-line-sigsegv.patch
@@ -0,0 +1,20 @@
+removeEmptyLines() segfaults on empty string
+
+https://bugs.gentoo.org/show_bug.cgi?id=454348
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=676423
+
+Patch written by Thibaut Paumard <paumard@users.sourceforge.net>
+--- a/src/htmlgen.cpp
++++ b/src/htmlgen.cpp
+@@ -1022,6 +1022,11 @@
+ static QCString removeEmptyLines(const QCString &s)
+ {
+   BufStr out(s.length()+1);
++  if (s.length()==0)
++  {
++    out.addChar('\0');
++    return out.data();
++  }
+   char *p=s.data();
+   if (p)
+   {
diff --git a/app-doc/doxygen/metadata.xml b/app-doc/doxygen/metadata.xml
new file mode 100644
index 0000000..3a6205d
--- /dev/null
+++ b/app-doc/doxygen/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>dev-tools</herd>
+<maintainer>
+    <email>xarthisius@gentoo.org</email>
+    <name>Kacper Kowalik</name>
+</maintainer>
+<longdescription>Doxygen is a tool for analyzing, documenting, and reverse-engineering 
+    source code of various languages using a variety of output formats 
+    (try it and see).  Doxygen supports C++, C, Java, Objective-C, Python, 
+    IDL (Corba and Microsoft flavors) and to some extent PHP, C#, and D,
+    as well as other languages (using additional helper tools).
+</longdescription>
+<use>
+	<flag name='nodot'>removes graphviz dependency, along with dot graphs</flag>
+	<flag name='dot'>allow to create dot graphs using <pkg>media-gfx/graphviz</pkg></flag>
+</use>
+</pkgmetadata>
diff --git a/metadata/md5-cache/app-doc/doxygen-1.8.3.1 b/metadata/md5-cache/app-doc/doxygen-1.8.3.1
new file mode 100644
index 0000000..d41965b
--- /dev/null
+++ b/metadata/md5-cache/app-doc/doxygen-1.8.3.1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst postrm prepare setup unpack
+DEPEND=sys-apps/sed sys-devel/flex sys-devel/bison doc? ( || ( >=dev-lang/python-2.7.3-r2:2.7 >=dev-lang/python-2.6.8-r3:2.6 ) ) qt4? ( dev-qt/qtgui:4 ) latex? ( app-text/texlive[extra] ) dev-lang/perl virtual/libiconv media-libs/libpng app-text/ghostscript-gpl dot? ( media-gfx/graphviz media-libs/freetype )
+DESCRIPTION=Documentation system for most programming languages
+EAPI=4
+HOMEPAGE=http://www.doxygen.org/
+IUSE=debug doc dot qt4 latex elibc_FreeBSD userland_GNU linguas_hy linguas_ar linguas_pt_BR linguas_ca linguas_zh linguas_cs linguas_de linguas_da linguas_eo linguas_es linguas_fa linguas_fi linguas_fr linguas_el linguas_hr linguas_hu linguas_id linguas_it linguas_ja linguas_ko linguas_lt linguas_mk linguas_nl linguas_nb linguas_pl linguas_pt linguas_ro linguas_ru linguas_sl linguas_sk linguas_sr linguas_sv linguas_tr linguas_uk linguas_vi linguas_af
+KEYWORDS=alpha amd64 arm hppa ia64 ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~x86-solaris
+LICENSE=GPL-2
+RDEPEND=qt4? ( dev-qt/qtgui:4 ) latex? ( app-text/texlive[extra] ) dev-lang/perl virtual/libiconv media-libs/libpng app-text/ghostscript-gpl dot? ( media-gfx/graphviz media-libs/freetype )
+RESTRICT=mirror
+SLOT=0
+SRC_URI=http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.3.1.src.tar.gz http://dev.gentoo.org/~xarthisius/distfiles/doxywizard.png
+_eclasses_=base	fc89786f3f7e7bcf03334359bd5b639b	eutils	d40dc948067bd3db1c8ebf7d51897313	fdo-mime	9c46e30acd923ff12e325dbe96bb98b9	flag-o-matic	c3131dc67d3bd39f044e92b8280505e4	multilib	ded93e450747134a079e647d888aa80b	python-any-r1	08d3455b23110d650f173ab0a090818b	python-utils-r1	4fc11614abf37ede29a4eb8aaae8a22a	qt4-r2	eaef5e386a92b608a8be456678fac653	toolchain-funcs	3e30ef439a720915f8f4fd4fe75f704c	user	9e552f935106ff0bc92af16da64b4b29
+_md5_=fc8b125b0e2563deba99f7b82c532cf0
