--- /dev/null
+Properly call namespaced std::isnan and use implicit
+conversion operators, such that they work in C++98 and C++14.
+See also:
+https://bugs.gentoo.org/show_bug.cgi?id=582866
+https://sourceforge.net/p/projectm/code/ci/92226e25192a69839b9ae3b66ea7173732c639b3
+
+--- libprojectM/Common.hpp
++++ libprojectM/Common.hpp
+@@ -63,7 +63,7 @@
+
+ #ifdef LINUX
+ #include <cstdlib>
+-#define projectM_isnan isnan
++#define projectM_isnan std::isnan
+
+ #endif
+
+--- libprojectM/MilkdropPresetFactory/Parser.cpp
++++ libprojectM/MilkdropPresetFactory/Parser.cpp
+@@ -1406,7 +1406,7 @@
+ PerFrameEqn * per_frame_eqn;
+ GenExpr * gen_expr;
+
+- if (fs == NULL)
++ if (fs.fail())
+ return NULL;
+ if (param_string == NULL)
+ return NULL;
+@@ -1561,7 +1561,7 @@
+
+ if (preset == NULL)
+ return NULL;
+- if (fs == NULL)
++ if (fs.fail())
+ return NULL;
+
+ if ((token = parseToken(fs, name)) != tEq)
+@@ -1875,7 +1875,7 @@
+ /* Null argument checks */
+ if (preset == NULL)
+ return PROJECTM_FAILURE;
+- if (fs == NULL)
++ if (fs.fail())
+ return PROJECTM_FAILURE;
+ if (token == NULL)
+ return PROJECTM_FAILURE;
+@@ -2166,7 +2166,7 @@
+
+ if (token == NULL)
+ return PROJECTM_FAILURE;
+- if (fs == NULL)
++ if (fs.fail())
+ return PROJECTM_FAILURE;
+ if (preset == NULL)
+ return PROJECTM_FAILURE;
+@@ -2348,7 +2348,7 @@
+ if (token == NULL)
+
+ return PROJECTM_FAILURE;
+- if (fs == NULL)
++ if (fs.fail())
+ return PROJECTM_FAILURE;
+ if (preset == NULL)
+ return PROJECTM_FAILURE;
-diff -urN projectM-complete-2.1.0-Source/src/libprojectM/CMakeLists.txt projectM-complete-2.1.0-Source.new/src/libprojectM/CMakeLists.txt
---- projectM-complete-2.1.0-Source/src/libprojectM/CMakeLists.txt 2012-05-20 05:43:26.000000000 +0200
-+++ projectM-complete-2.1.0-Source.new/src/libprojectM/CMakeLists.txt 2013-01-21 21:07:49.097541426 +0100
+--- libprojectM/CMakeLists.txt
++++ libprojectM/CMakeLists.txt
@@ -35,7 +35,7 @@
ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"")
Index: projectM-complete-2.1.0-Source/src/libprojectM/CMakeLists.txt
===================================================================
---- projectM-complete-2.1.0-Source.orig/src/libprojectM/CMakeLists.txt
-+++ projectM-complete-2.1.0-Source/src/libprojectM/CMakeLists.txt
+--- libprojectM/CMakeLists.txt
++++ libprojectM/CMakeLists.txt
@@ -33,7 +33,7 @@ set(PROJECTM_VERSION 2.1.0)
set(PROJECTM_ABI_LEVEL 2)
#
--- /dev/null
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit cmake-utils flag-o-matic toolchain-funcs
+
+MY_P=${PN/m/M}-complete-${PV}-Source
+MY_P=${MY_P/lib}
+
+DESCRIPTION="A graphical music visualization plugin similar to milkdrop"
+HOMEPAGE="http://projectm.sourceforge.net"
+SRC_URI="mirror://sourceforge/projectm/${MY_P}.tar.gz"
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="debug openmp video_cards_nvidia"
+
+RDEPEND="media-fonts/dejavu
+ >=media-libs/ftgl-2.1.3_rc5
+ media-libs/freetype:2
+ media-libs/mesa
+ media-libs/glew:=
+ sys-libs/zlib
+ video_cards_nvidia? ( media-gfx/nvidia-cg-toolkit )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig"
+
+S=${WORKDIR}/${MY_P}/src/libprojectM
+
+PATCHES=(
+ "${FILESDIR}"/${P}-multilib.patch
+ "${FILESDIR}"/${P}-path.patch
+ "${FILESDIR}"/${P}-fix-c++14.patch
+)
+
+src_configure() {
+ if use video_cards_nvidia; then
+ append-ldflags -L/opt/nvidia-cg-toolkit/$(get_libdir)
+ append-ldflags -L/opt/nvidia-cg-toolkit/lib
+ append-cppflags -I/opt/nvidia-cg-toolkit/include
+ fi
+
+ local mycmakeargs=(
+ -DUSE_CG=$(usex video_cards_nvidia)
+ -DprojectM_FONT_MENU="${EPREFIX}/usr/share/fonts/dejavu/DejaVuSans.ttf"
+ -DprojectM_FONT_TITLE="${EPREFIX}/usr/share/fonts/dejavu/DejaVuSansMono.ttf"
+ )
+
+ if use openmp && tc-has-openmp; then
+ mycmakeargs+=( -DUSE_OPENMP=ON )
+ else
+ mycmakeargs+=( -DUSE_OPENMP=OFF )
+ fi
+
+ cmake-utils_src_configure
+}