svn commit: r360785 - in head/multimedia/aegisub: . files

Thomas Zander riggs at FreeBSD.org
Sat Jul 5 17:46:42 UTC 2014


Author: riggs
Date: Sat Jul  5 17:46:36 2014
New Revision: 360785
URL: http://svnweb.freebsd.org/changeset/ports/360785
QAT: https://qat.redports.org/buildarchive/r360785/

Log:
  - Update to upstream release 3.1.3
  - Makefile cleanup / pet portlint
  - Reduce available set of OPTIONS
    - DEBUG, GCOV, EFENCE not supported anymore
    - ASS and LUA now required by port
  
  PR:		191375
  Submitted by:	tkato432 at yahoo.com
  Approved by:	mentors (implicit)

Added:
  head/multimedia/aegisub/files/patch-libaegisub__ass__uuencode.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-libaegisub__cajun__reader.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__ass_file.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__ass_override.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__auto4_lua_dialog.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__base_grid.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__base_grid.h   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__command__edit.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__command__recent.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__command__video.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__dialog_jumpto.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__dialog_kara_timing_copy.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__dialog_properties.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__dialog_shift_times.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__dialog_style_editor.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__ffmpegsource_common.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__ffmpegsource_common.h   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__frame_main.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__main.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__preferences_base.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__resolution_resampler.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__subs_edit_box.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__subs_preview.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__subtitle_format_srt.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__timeedit_ctrl.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__validators.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__video_context.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__video_display.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__video_frame.h   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__video_out_gl.h   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__video_provider_ffmpegsource.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__video_provider_yuv4mpeg.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__visual_tool_rotatexy.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__visual_tool_scale.cpp   (contents, props changed)
  head/multimedia/aegisub/files/patch-src__visual_tool_vector_clip.cpp   (contents, props changed)
Deleted:
  head/multimedia/aegisub/files/patch-src__audio_player_alsa.cpp
  head/multimedia/aegisub/files/patch-src__audio_player_pulse.cpp
  head/multimedia/aegisub/files/patch-src__audio_provider_ffmpegsource.cpp
Modified:
  head/multimedia/aegisub/Makefile
  head/multimedia/aegisub/distinfo
  head/multimedia/aegisub/pkg-plist

Modified: head/multimedia/aegisub/Makefile
==============================================================================
--- head/multimedia/aegisub/Makefile	Sat Jul  5 17:44:19 2014	(r360784)
+++ head/multimedia/aegisub/Makefile	Sat Jul  5 17:46:36 2014	(r360785)
@@ -2,8 +2,7 @@
 # $FreeBSD$
 
 PORTNAME=	aegisub
-PORTVERSION=	2.1.9
-PORTREVISION=	2
+PORTVERSION=	3.1.3
 CATEGORIES=	multimedia
 MASTER_SITES=	http://ftp.aegisub.org/pub/archives/releases/source/:aegisub \
 		ftp://ftp.aegisub.org/pub/archives/releases/source/:aegisub \
@@ -16,44 +15,70 @@ COMMENT=	Cross-platform subtitle editor
 
 LICENSE=	BSD3CLAUSE
 
-LIB_DEPENDS=	libfontconfig.so:${PORTSDIR}/x11-fonts/fontconfig
-
-OPTIONS_DEFINE=	DEBUG PROFILE GCOV EFENCE ASS ALSA OPENAL PORTAUDIO PULSEAUDIO \
-		FFMPEG HUNSPELL LUA DOCS
-OPTIONS_DEFAULT=	ASS PULSEAUDIO FFMPEG HUNSPELL LUA
-GCOV_DESC=	GCOV (require profiling)
-EFENCE_DESC=	Electric Fence (require profiling)
-ASS_DESC=	libASS subtitle provider
-HUNSPELL_DESC=	Spell checking via Hunspell
+LIB_DEPENDS=	libboost_thread.so:${PORTSDIR}/devel/boost-libs \
+		libicui18n.so:${PORTSDIR}/devel/icu \
+		libfontconfig.so:${PORTSDIR}/x11-fonts/fontconfig \
+		libass.so:${PORTSDIR}/multimedia/libass
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	FFMS
 GH_PROJECT=	ffms2
 GH_TAGNAME=	${FFMS_VERSION}
-GH_COMMIT=	ec0ef9c
+GH_COMMIT=	6b0e4a2
 
 WRKSRC=		${WRKDIR}/${DISTNAME}
 
-USES=		desktop-file-utils gettext gmake pkgconfig
+USES=		compiler:c++11-lib desktop-file-utils gmake gettext iconv \
+		pkgconfig tar:xz
 USE_GNOME=	intltool
-USE_WX=		2.8
-WX_COMPS=	wx contrib
+USE_WX=		3.0
 WX_UNICODE=	yes
 WX_CONF_ARGS=	absolute
 USE_GL=		glu
-USE_GCC=	any
+USE_CSTD=	c99
+USE_LUA=	5.1+
 GNU_CONFIGURE=	yes
-CONFIGURE_ARGS=	--disable-gcc-prec --without-lua50
+CONFIGURE_ARGS=	--disable-compiler-flags \
+		--disable-update-checker \
+		--without-libc++ \
+		--disable-gcc-prec
 INSTALLS_ICONS=	yes
 
 PLIST_SUB=	VERSION="${PORTVERSION:R}"
 
-CFLAGS+=	-I${LOCALBASE}/include
 CPPFLAGS+=	-I${LOCALBASE}/include
-LDFLAGS+=	-L${LOCALBASE}/lib -lz
+LDFLAGS+=	-L${LOCALBASE}/lib ${ICONV_LIB}
+
+OPTIONS_DEFINE=		ALSA DOCS FFMPEG FFTW HUNSPELL OPENAL \
+			PORTAUDIO PULSEAUDIO
+OPTIONS_DEFAULT=	FFMPEG FFTW HUNSPELL PULSEAUDIO
+
+ALSA_LIB_DEPENDS=	libasound.so:${PORTSDIR}/audio/alsa-lib
+ALSA_CONFIGURE_OFF=	--without-alsa
+FFMPEG_LIB_DEPENDS=	libavcodec.so:${PORTSDIR}/multimedia/ffmpeg
+FFMPEG_CONFIGURE_ENV=	FFMS2_CFLAGS="${FFMS_CFLAGS}" \
+			FFMS2_LIBS="${FFMS_LIBS}"
+FFMPEG_CONFIGURE_OFF=	--without-ffms2
+FFMPEG_CPPFLAGS=	${FFMS_CFLAGS}
+FFTW_LIB_DEPENDS=	libfftw3.so:${PORTSDIR}/math/fftw3
+FFTW_CONFIGURE_OFF=	--without-fftw3
+HUNSPELL_LIB_DEPENDS=	libhunspell-1.3.so:${PORTSDIR}/textproc/hunspell
+HUNSPELL_CONFIGURE_OFF=	--without-hunspell
+OPENAL_USES=		openal
+OPENAL_CONFIGURE_OFF=	--without-openal
+PORTAUDIO_BUILD_DEPENDS=\
+			portaudio2>0:${PORTSDIR}/audio/portaudio2
+PORTAUDIO_RUN_DEPENDS=	portaudio2>0:${PORTSDIR}/audio/portaudio2
+PORTAUDIO_CFLAGS=	-isystem ${LOCALBASE}/include/portaudio2
+PORTAUDIO_LDFLAGS=	-L${LOCALBASE}/lib/portaudio2
+PORTAUDIO_CONFIGURE_OFF=\
+			--without-portaudio
+PULSEAUDIO_LIB_DEPENDS=	libpulse.so:${PORTSDIR}/audio/pulseaudio
+PULSEAUDIO_CONFIGURE_OFF=\
+			--without-libpulse
 
 FFMS_NAME=	ffms2
-FFMS_VERSION=	2.19
+FFMS_VERSION=	2.19.1
 FFMS_DISTNAME=	${FFMS_NAME}-${FFMS_VERSION}
 FFMS_DISTFILE=	${FFMS_DISTNAME}.tar.gz
 FFMS_WRKSRC=	${WRKDIR}/${GH_ACCOUNT}-${GH_PROJECT}-${GH_COMMIT}
@@ -61,116 +86,29 @@ FFMS_CFLAGS=	-I${FFMS_WRKSRC}/include
 FFMS_LIBS=	${FFMS_WRKSRC}/src/core/.libs/libffms2.a \
 		$$(pkg-config --libs libavcodec libavformat libswscale libavutil libavresample)
 
-.include <bsd.port.options.mk>
+.include <bsd.port.pre.mk>
 
-.if ${PORT_OPTIONS:MDEBUG}
-CONFIGURE_ARGS+=	--enable-debug --enable-debug-exceptions
-.endif
-
-.if ${PORT_OPTIONS:MGCOV}
-CONFIGURE_ARGS+=	--enable-gcov
-LDFLAGS+=	-fprofile-arcs
-WITH_PROFILE=	yes
-.endif
-
-.if ${PORT_OPTIONS:MEFENCE}
-LIB_DEPENDS+=	libefence.so:${PORTSDIR}/devel/ElectricFence
-CONFIGURE_ARGS+=	--enable-efence
-WITH_PROFILE=	yes
-.endif
-
-.if ${PORT_OPTIONS:MPROFILE}
-CONFIGURE_ARGS+=	--enable-profile
-.endif
-
-.if ${PORT_OPTIONS:MASS}
-LIB_DEPENDS+=	libass.so:${PORTSDIR}/multimedia/libass
-.else
-CONFIGURE_ARGS+=	--without-libass
-.endif
-
-.if ${PORT_OPTIONS:MALSA}
-LIB_DEPENDS+=	libasound.so:${PORTSDIR}/audio/alsa-lib
+.if ${COMPILER_TYPE} == "gcc"
+USE_CXXSTD=	gnu++11
 .else
-CONFIGURE_ARGS+=	--without-alsa
-.endif
-
-.if ${PORT_OPTIONS:MOPENAL}
-USES+=		openal
-.else
-CONFIGURE_ARGS+=	--without-openal
-.endif
-
-.if ${PORT_OPTIONS:MPORTAUDIO}
-BUILD_DEPENDS+=	portaudio>=19:${PORTSDIR}/audio/portaudio2
-RUN_DEPENDS+=	portaudio>=19:${PORTSDIR}/audio/portaudio2
-CONFIGURE_ENV+=	PORTAUDIO_LIBS="${LOCALBASE}/lib/portaudio2/libportaudio.so"
-.else
-CONFIGURE_ARGS+=	--without-portaudio
-.endif
-
-.if ${PORT_OPTIONS:MPULSEAUDIO}
-LIB_DEPENDS+=	libpulse.so:${PORTSDIR}/audio/pulseaudio
-.else
-CONFIGURE_ARGS+=	--without-pulseaudio
-.endif
-
-.if ${PORT_OPTIONS:MFFMPEG}
-LIB_DEPENDS+=	libavcodec.so:${PORTSDIR}/multimedia/ffmpeg
-CONFIGURE_ENV+=	FFMS_CFLAGS="${FFMS_CFLAGS}" FFMS_LIBS="${FFMS_LIBS}"
-CONFIGURE_ARGS+=	--with-provider-video=ffmpegsource \
-			--with-provider-audio=ffmpegsource
-CPPFLAGS+=	${FFMS_CFLAGS}
-.else
-CONFIGURE_ARGS+=	--without-ffms
-.endif
-
-.if ${PORT_OPTIONS:MHUNSPELL}
-LIB_DEPENDS+=	libhunspell-1.3.so:${PORTSDIR}/textproc/hunspell
-.else
-CONFIGURE_ARGS+=	--without-hunspell
-.endif
-
-.if ${PORT_OPTIONS:MLUA}
-USES+=		lua:51
-CONFIGURE_ENV+=	LUA_CFLAGS="-I${LUA_INCDIR}" \
-		LUA_LDFLAGS="-L${LUA_LIBDIR} -llua-${LUA_VER}"
-CPPFLAGS+=	-I${LUA_INCDIR}
-.else
-CONFIGURE_ARGS+=	--without-lua
+USE_CXXSTD=	c++11
+CXXFLAGS+=	-Wno-c++11-narrowing
 .endif
 
 post-patch:
-.for i in configure
-	@${REINPLACE_CMD} -e \
-		'/opt_flag/s|-O2|| ; \
-		 /ICONV_LIBS/s|-liconv||' ${WRKSRC}/${i}
-.endfor
-.for i in automation/Makefile.in
 	@${REINPLACE_CMD} -e \
-		's|@HAVE_AUTOMATION_TRUE@|| ; \
-		 s|@HAVE_AUTOMATION_FALSE@|#| ; \
-		 s|@HAVE_AUTO4_LUA_TRUE@|| ; \
-		 s|@HAVE_AUTO4_LUA_FALSE@|#| ; \
-		 s|@HAVE_AUTO3_LUA_TRUE@|#| ; \
-		 s|@HAVE_AUTO3_LUA_FALSE|| ; \
-		 /^install-data-am/s|: install|: # install|' ${WRKSRC}/${i}
-.endfor
-.for i in src/Makefile.in src/libauto3/Makefile.in
+		's| -O3||' ${WRKSRC}/configure
 	@${REINPLACE_CMD} -e \
-		's|@HAVE_AUTO3_LUA_TRUE@|#| ; \
-		 s|@HAVE_AUTO3_LUA_FALSE@||' ${WRKSRC}/${i}
-.endfor
-.for i in src/audio_player_portaudio.h
+		's|".*build/|"./build/|' ${WRKSRC}/build/version.sh
 	@${REINPLACE_CMD} -e \
-		's|<portaudio\.h>|<portaudio2/portaudio.h>|' ${WRKSRC}/${i}
-.endfor
+		'/iconv_t/s|^|//|' \
+		${WRKSRC}/libaegisub/include/libaegisub/charset_conv.h
 
 pre-configure:
 .if ${PORT_OPTIONS:MFFMPEG}
 	@(cd ${FFMS_WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./configure \
-		--disable-shared --disable-silent-rules CC="${CC}" \
-		CXX="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}")
+		--disable-shared CC="${CC}" CXX="${CXX}" CFLAGS="${CFLAGS}" \
+		CXXFLAGS="${CXXFLAGS}")
 .endif
 
 pre-build:
@@ -181,8 +119,9 @@ pre-build:
 .endif
 
 post-install:
-	@(cd ${WRKSRC}/automation && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} \
-		${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} \
-		install-nobase_automationDATA install-nobase_share_docDATA)
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}/automation/v4-docs
+	(cd ${WRKSRC}/automation/v4-docs && ${INSTALL_DATA} * \
+		${STAGEDIR}${DOCSDIR}/automation/v4-docs)
+	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/aegisub-*
 
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>

Modified: head/multimedia/aegisub/distinfo
==============================================================================
--- head/multimedia/aegisub/distinfo	Sat Jul  5 17:44:19 2014	(r360784)
+++ head/multimedia/aegisub/distinfo	Sat Jul  5 17:46:36 2014	(r360785)
@@ -1,4 +1,4 @@
-SHA256 (aegisub-2.1.9.tar.gz) = ac1f20751f3d2732d7e11627ea4cc30b53cb905d11422925b7f881785d373706
-SIZE (aegisub-2.1.9.tar.gz) = 2538256
-SHA256 (ffms2-2.19.tar.gz) = 12611778f9f0083af5627067db0b163c48a0c32a43a0b4145da612f43afa69f2
-SIZE (ffms2-2.19.tar.gz) = 512114
+SHA256 (aegisub-3.1.3.tar.xz) = efea5bc2bc5e0651ada4f65cfdd8af1b422a15f87933710d11287bf51e2b5e58
+SIZE (aegisub-3.1.3.tar.xz) = 4215196
+SHA256 (ffms2-2.19.1.tar.gz) = 8516af3f71531746e7e3e4b16eb30dade5df5edfc0782e7b69f965310ea66640
+SIZE (ffms2-2.19.1.tar.gz) = 512444

Added: head/multimedia/aegisub/files/patch-libaegisub__ass__uuencode.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-libaegisub__ass__uuencode.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,11 @@
+--- libaegisub/ass/uuencode.cpp.orig
++++ libaegisub/ass/uuencode.cpp
+@@ -16,6 +16,8 @@
+ 
+ #include "../config.h"
+ 
++#include <cstring>
++
+ #include "libaegisub/ass/uuencode.h"
+ 
+ // Despite being called uuencoding by ass_specs.doc, the format is actually

Added: head/multimedia/aegisub/files/patch-libaegisub__cajun__reader.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-libaegisub__cajun__reader.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,27 @@
+--- libaegisub/common/cajun/reader.cpp.orig
++++ libaegisub/common/cajun/reader.cpp
+@@ -9,6 +9,7 @@
+ #include "libaegisub/cajun/reader.h"
+ 
+ #include <cassert>
++#include <cstdio>
+ #include <set>
+ #include <sstream>
+ 
+@@ -243,8 +244,16 @@
+ }
+ 
+ void Reader::MatchNumber(std::string& sNumber, InputStream& inputStream) {
++#if defined(_LIBCPP_VERSION)
+ 	const char numericChars[] = "0123456789.eE-+";
+ 	while (!inputStream.EOS() && std::find(numericChars, std::end(numericChars), inputStream.Peek()) != std::end(numericChars))
++#else
++	const char sNumericChars[] = "0123456789.eE-+";
++	std::set<char> numericChars; 
++	numericChars.insert(sNumericChars, sNumericChars + sizeof(sNumericChars)); 
++
++	while (!inputStream.EOS()&& numericChars.count(inputStream.Peek())) 
++#endif
+ 		sNumber.push_back(inputStream.Get());
+ }
+ 

Added: head/multimedia/aegisub/files/patch-src__ass_file.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__ass_file.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,27 @@
+--- src/ass_file.cpp.orig
++++ src/ass_file.cpp
+@@ -49,6 +49,13 @@
+ #include <boost/algorithm/string/case_conv.hpp>
+ #include <boost/filesystem/path.hpp>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x) 
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ namespace std {
+ 	template<>
+ 	void swap(AssFile &lft, AssFile &rgt) {
+@@ -71,8 +78,8 @@
+ 	Line.push_back(*new AssInfo("WrapStyle", "0"));
+ 	Line.push_back(*new AssInfo("ScaledBorderAndShadow", "yes"));
+ 	if (!OPT_GET("Subtitle/Default Resolution/Auto")->GetBool()) {
+-		Line.push_back(*new AssInfo("PlayResX", std::to_string(OPT_GET("Subtitle/Default Resolution/Width")->GetInt())));
+-		Line.push_back(*new AssInfo("PlayResY", std::to_string(OPT_GET("Subtitle/Default Resolution/Height")->GetInt())));
++		Line.push_back(*new AssInfo("PlayResX", TO_STRING(OPT_GET("Subtitle/Default Resolution/Width")->GetInt())));
++		Line.push_back(*new AssInfo("PlayResY", TO_STRING(OPT_GET("Subtitle/Default Resolution/Height")->GetInt())));
+ 	}
+ 	Line.push_back(*new AssInfo("YCbCr Matrix", "None"));
+ 

Added: head/multimedia/aegisub/files/patch-src__ass_override.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__ass_override.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,30 @@
+--- src/ass_override.cpp.orig
++++ src/ass_override.cpp
+@@ -49,6 +49,13 @@
+ #include <boost/range/adaptor/transformed.hpp>
+ #include <functional>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ using namespace boost::adaptors;
+ 
+ AssOverrideParameter::AssOverrideParameter(VariableDataType type, AssParameterClass classification)
+@@ -129,11 +136,11 @@
+ 	if (classification == AssParameterClass::ALPHA)
+ 		Set(str(boost::format("&H%02X&") % mid(0, new_value, 255)));
+ 	else
+-		Set(std::to_string(new_value));
++		Set(TO_STRING(new_value));
+ }
+ 
+ template<> void AssOverrideParameter::Set<double>(double new_value) {
+-	Set(std::to_string(new_value));
++	Set(TO_STRING(new_value));
+ }
+ 
+ template<> void AssOverrideParameter::Set<bool>(bool new_value) {

Added: head/multimedia/aegisub/files/patch-src__auto4_lua_dialog.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__auto4_lua_dialog.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,34 @@
+--- src/auto4_lua_dialog.cpp.orig
++++ src/auto4_lua_dialog.cpp
+@@ -66,6 +66,13 @@
+ #include <wx/valnum.h>
+ #include <wx/window.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ namespace {
+ 	inline void get_if_right_type(lua_State *L, std::string &def) {
+ 		if (lua_isstring(L, -1))
+@@ -256,7 +263,7 @@
+ 			}
+ 
+ 			bool CanSerialiseValue() const override  { return true; }
+-			std::string SerialiseValue() const override { return std::to_string(value); }
++			std::string SerialiseValue() const override { return TO_STRING(value); }
+ 			void UnserialiseValue(const std::string &serialised) override { value = atoi(serialised.c_str()); }
+ 
+ 			wxControl *Create(wxWindow *parent) override {
+@@ -317,7 +324,7 @@
+ 			}
+ 
+ 			bool CanSerialiseValue() const override { return true; }
+-			std::string SerialiseValue() const override { return std::to_string(value); }
++			std::string SerialiseValue() const override { return TO_STRING(value); }
+ 			void UnserialiseValue(const std::string &serialised) override { value = atof(serialised.c_str()); }
+ 
+ 			wxControl *Create(wxWindow *parent) override {

Added: head/multimedia/aegisub/files/patch-src__base_grid.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__base_grid.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,83 @@
+--- src/base_grid.cpp.orig
++++ src/base_grid.cpp
+@@ -67,6 +67,15 @@
+ #include <wx/scrolbar.h>
+ #include <wx/sizer.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x) 
++#define TO_WSTRING(x) std::to_wstring(x) 
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#define TO_WSTRING(x) boost::lexical_cast<std::wstring>(x)
++#endif
++
+ enum {
+ 	GRID_SCROLLBAR = 1730,
+ 	MENU_SHOW_COL = 1250 // Needs 15 IDs after this
+@@ -194,8 +203,8 @@
+ }
+ 
+ void BaseGrid::OnSubtitlesSave() {
+-	context->ass->SaveUIState("Scroll Position", std::to_string(yPos));
+-	context->ass->SaveUIState("Active Line", std::to_string(GetDialogueIndex(active_line)));
++	context->ass->SaveUIState("Scroll Position", TO_STRING(yPos));
++	context->ass->SaveUIState("Active Line", TO_STRING(GetDialogueIndex(active_line)));
+ }
+ 
+ void BaseGrid::OnShowColMenu(wxCommandEvent &event) {
+@@ -557,11 +566,11 @@
+ }
+ 
+ void BaseGrid::GetRowStrings(int row, AssDialogue *line, bool *paint_columns, wxString *strings, bool replace, wxString const& rep_char) const {
+-	if (paint_columns[0]) strings[0] = std::to_wstring(row + 1);
+-	if (paint_columns[1]) strings[1] = std::to_wstring(line->Layer);
++	if (paint_columns[0]) strings[0] = TO_WSTRING(row + 1);
++	if (paint_columns[1]) strings[1] = TO_WSTRING(line->Layer);
+ 	if (byFrame) {
+-		if (paint_columns[2]) strings[2] = std::to_wstring(context->videoController->FrameAtTime(line->Start, agi::vfr::START));
+-		if (paint_columns[3]) strings[3] = std::to_wstring(context->videoController->FrameAtTime(line->End, agi::vfr::END));
++		if (paint_columns[2]) strings[2] = TO_WSTRING(context->videoController->FrameAtTime(line->Start, agi::vfr::START));
++		if (paint_columns[3]) strings[3] = TO_WSTRING(context->videoController->FrameAtTime(line->End, agi::vfr::END));
+ 	}
+ 	else {
+ 		if (paint_columns[2]) strings[2] = to_wx(line->Start.GetAssFormated());
+@@ -570,9 +579,9 @@
+ 	if (paint_columns[4]) strings[4] = to_wx(line->Style);
+ 	if (paint_columns[5]) strings[5] = to_wx(line->Actor);
+ 	if (paint_columns[6]) strings[6] = to_wx(line->Effect);
+-	if (paint_columns[7]) strings[7] = line->Margin[0] ? wxString(std::to_wstring(line->Margin[0])) : wxString();
+-	if (paint_columns[8]) strings[8] = line->Margin[1] ? wxString(std::to_wstring(line->Margin[1])) : wxString();
+-	if (paint_columns[9]) strings[9] = line->Margin[2] ? wxString(std::to_wstring(line->Margin[2])) : wxString();
++	if (paint_columns[7]) strings[7] = line->Margin[0] ? wxString(TO_WSTRING(line->Margin[0])) : wxString();
++	if (paint_columns[8]) strings[8] = line->Margin[1] ? wxString(TO_WSTRING(line->Margin[1])) : wxString();
++	if (paint_columns[9]) strings[9] = line->Margin[2] ? wxString(TO_WSTRING(line->Margin[2])) : wxString();
+ 
+ 	if (paint_columns[10]) {
+ 		strings[10].clear();
+@@ -799,7 +808,7 @@
+ 	// O(1) widths
+ 	int marginLen = dc.GetTextExtent("0000").GetWidth();
+ 
+-	int labelLen = dc.GetTextExtent(std::to_wstring(GetRows())).GetWidth();
++	int labelLen = dc.GetTextExtent(TO_WSTRING(GetRows())).GetWidth();
+ 	int startLen = 0;
+ 	int endLen = 0;
+ 	if (!byFrame)
+@@ -844,12 +853,12 @@
+ 	}
+ 
+ 	// Finish layer
+-	int layerLen = maxLayer ? dc.GetTextExtent(std::to_wstring(maxLayer)).GetWidth() : 0;
++	int layerLen = maxLayer ? dc.GetTextExtent(TO_WSTRING(maxLayer)).GetWidth() : 0;
+ 
+ 	// Finish times
+ 	if (byFrame) {
+-		startLen = dc.GetTextExtent(std::to_wstring(maxStart)).GetWidth();
+-		endLen = dc.GetTextExtent(std::to_wstring(maxEnd)).GetWidth();
++		startLen = dc.GetTextExtent(TO_WSTRING(maxStart)).GetWidth();
++		endLen = dc.GetTextExtent(TO_WSTRING(maxEnd)).GetWidth();
+ 	}
+ 
+ 	// Set column widths

Added: head/multimedia/aegisub/files/patch-src__base_grid.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__base_grid.h	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,11 @@
+--- src/base_grid.h.orig
++++ src/base_grid.h
+@@ -39,6 +39,8 @@
+ #include <map>
+ #include <memory>
+ #include <vector>
++#include <wx/brush.h>
++#include <wx/scrolbar.h>
+ #include <wx/window.h>
+ 
+ #include "selection_controller.h"

Added: head/multimedia/aegisub/files/patch-src__command__edit.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__command__edit.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,43 @@
+--- src/command/edit.cpp.orig
++++ src/command/edit.cpp
+@@ -68,6 +68,13 @@
+ #include <wx/clipbrd.h>
+ #include <wx/fontdlg.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x) 
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ namespace {
+ 	using namespace boost::adaptors;
+ 	using cmd::Command;
+@@ -450,13 +457,13 @@
+ 		if (font.GetFaceName() != startfont.GetFaceName())
+ 			set_tag(line, blocks, "\\fn", from_wx(font.GetFaceName()), sel_start, sel_end);
+ 		if (font.GetPointSize() != startfont.GetPointSize())
+-			set_tag(line, blocks, "\\fs", std::to_string(font.GetPointSize()), sel_start, sel_end);
++			set_tag(line, blocks, "\\fs", TO_STRING(font.GetPointSize()), sel_start, sel_end);
+ 		if (font.GetWeight() != startfont.GetWeight())
+-			set_tag(line, blocks, "\\b", std::to_string(font.GetWeight() == wxFONTWEIGHT_BOLD), sel_start, sel_end);
++			set_tag(line, blocks, "\\b", TO_STRING(font.GetWeight() == wxFONTWEIGHT_BOLD), sel_start, sel_end);
+ 		if (font.GetStyle() != startfont.GetStyle())
+-			set_tag(line, blocks, "\\i", std::to_string(font.GetStyle() == wxFONTSTYLE_ITALIC), sel_start, sel_end);
++			set_tag(line, blocks, "\\i", TO_STRING(font.GetStyle() == wxFONTSTYLE_ITALIC), sel_start, sel_end);
+ 		if (font.GetUnderlined() != startfont.GetUnderlined())
+-			set_tag(line, blocks, "\\i", std::to_string(font.GetUnderlined()), sel_start, sel_end);
++			set_tag(line, blocks, "\\i", TO_STRING(font.GetUnderlined()), sel_start, sel_end);
+ 
+ 		commit_text(c, _("set font"), sel_start, sel_end);
+ 	}
+@@ -711,7 +718,7 @@
+ }
+ 
+ static void combine_karaoke(AssDialogue *first, AssDialogue *second) {
+-	first->Text = first->Text.get() + "{\\k" + std::to_string((second->Start - first->End) / 10) + "}" + second->Text.get();
++	first->Text = first->Text.get() + "{\\k" + TO_STRING((second->Start - first->End) / 10) + "}" + second->Text.get();
+ }
+ 
+ static void combine_concat(AssDialogue *first, AssDialogue *second) {

Added: head/multimedia/aegisub/files/patch-src__command__recent.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__command__recent.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,25 @@
+--- src/command/recent.cpp.orig
++++ src/command/recent.cpp
+@@ -44,6 +44,13 @@
+ #include <wx/event.h>
+ #include <wx/msgdlg.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x) 
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ namespace {
+ 	using cmd::Command;
+ 
+@@ -124,7 +131,7 @@
+ 	void operator()(agi::Context *c) {
+ 		T::operator()(c, id);
+ 	}
+-	mru_wrapper(int id) : id(id) , full_name(T::name() + std::to_string(id)) { }
++	mru_wrapper(int id) : id(id) , full_name(T::name() + TO_STRING(id)) { }
+ };
+ }
+ 

Added: head/multimedia/aegisub/files/patch-src__command__video.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__command__video.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,25 @@
+--- src/command/video.cpp.orig
++++ src/command/video.cpp
+@@ -67,6 +67,13 @@
+ #include <wx/msgdlg.h>
+ #include <wx/textdlg.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_WSTRING(x) std::to_wstring(x) 
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_WSTRING(x) boost::lexical_cast<std::wstring>(x)
++#endif
++
+ namespace {
+ 	using cmd::Command;
+ 
+@@ -119,7 +126,7 @@
+ 		std::string value = from_wx(wxGetTextFromUser(
+ 			_("Enter aspect ratio in either:\n  decimal (e.g. 2.35)\n  fractional (e.g. 16:9)\n  specific resolution (e.g. 853x480)"),
+ 			_("Enter aspect ratio"),
+-			std::to_wstring(c->videoController->GetAspectRatioValue())));
++			TO_WSTRING(c->videoController->GetAspectRatioValue())));
+ 		if (value.empty()) return;
+ 
+ 		double numval = 0;

Added: head/multimedia/aegisub/files/patch-src__dialog_jumpto.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__dialog_jumpto.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,25 @@
+--- src/dialog_jumpto.cpp.orig
++++ src/dialog_jumpto.cpp
+@@ -48,6 +48,13 @@
+ #include <wx/stattext.h>
+ #include <wx/textctrl.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ DialogJumpTo::DialogJumpTo(agi::Context *c)
+ : wxDialog(c->parent, -1, _("Jump to"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxWANTS_CHARS)
+ , c(c)
+@@ -59,7 +66,7 @@
+ 	auto LabelTime = new wxStaticText(this, -1, _("Time: "));
+ 
+ 	JumpFrame = new wxTextCtrl(this,-1,"",wxDefaultPosition,wxSize(-1,-1),wxTE_PROCESS_ENTER, IntValidator((int)jumpframe));
+-	JumpFrame->SetMaxLength(std::to_string(c->videoController->GetLength() - 1).size());
++	JumpFrame->SetMaxLength(TO_STRING(c->videoController->GetLength() - 1).size());
+ 	JumpTime = new TimeEdit(this, -1, c, AssTime(c->videoController->TimeAtFrame(jumpframe)).GetAssFormated(), wxSize(-1,-1));
+ 
+ 	auto TimesSizer = new wxGridSizer(2, 5, 5);

Added: head/multimedia/aegisub/files/patch-src__dialog_kara_timing_copy.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__dialog_kara_timing_copy.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,25 @@
+--- src/dialog_kara_timing_copy.cpp.orig
++++ src/dialog_kara_timing_copy.cpp
+@@ -69,6 +69,13 @@
+ #define TEXT_LABEL_SOURCE _("Source: ")
+ #define TEXT_LABEL_DEST _("Dest: ")
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ class KaraokeLineMatchDisplay : public wxControl {
+ 	typedef AssKaraoke::Syllable MatchSyllable;
+ 
+@@ -358,7 +365,7 @@
+ 		int duration = 0;
+ 		for (auto const& syl : match.src)
+ 			duration += syl.duration;
+-		res += "{\\k" + std::to_string(duration / 10) + "}" + match.dst;
++		res += "{\\k" + TO_STRING(duration / 10) + "}" + match.dst;
+ 	}
+ 
+ 	return res;

Added: head/multimedia/aegisub/files/patch-src__dialog_properties.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__dialog_properties.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,36 @@
+--- src/dialog_properties.cpp.orig
++++ src/dialog_properties.cpp
+@@ -54,6 +54,15 @@
+ #include <wx/stattext.h>
+ #include <wx/textctrl.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x)
++#define TO_WSTRING(x) std::to_wstring(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#define TO_WSTRING(x) boost::lexical_cast<std::wstring>(x)
++#endif
++
+ DialogProperties::DialogProperties(agi::Context *c)
+ : wxDialog(c->parent, -1, _("Script Properties"))
+ , c(c)
+@@ -145,7 +154,7 @@
+ 
+ 	count += SetInfoIfDifferent("PlayResX", from_wx(ResX->GetValue()));
+ 	count += SetInfoIfDifferent("PlayResY", from_wx(ResY->GetValue()));
+-	count += SetInfoIfDifferent("WrapStyle", std::to_string(WrapStyle->GetSelection()));
++	count += SetInfoIfDifferent("WrapStyle", TO_STRING(WrapStyle->GetSelection()));
+ 	count += SetInfoIfDifferent("ScaledBorderAndShadow", ScaleBorder->GetValue() ? "yes" : "no");
+ 
+ 	if (count) c->ass->Commit(_("property changes"), AssFile::COMMIT_SCRIPTINFO);
+@@ -162,6 +171,6 @@
+ }
+ 
+ void DialogProperties::OnSetFromVideo(wxCommandEvent &) {
+-	ResX->SetValue(std::to_wstring(c->videoController->GetWidth()));
+-	ResY->SetValue(std::to_wstring(c->videoController->GetHeight()));
++	ResX->SetValue(TO_WSTRING(c->videoController->GetWidth()));
++	ResY->SetValue(TO_WSTRING(c->videoController->GetHeight()));
+ }

Added: head/multimedia/aegisub/files/patch-src__dialog_shift_times.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__dialog_shift_times.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,25 @@
+--- src/dialog_shift_times.cpp.orig
++++ src/dialog_shift_times.cpp
+@@ -56,6 +56,13 @@
+ #include <wx/sizer.h>
+ #include <wx/textctrl.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_WSTRING(x) std::to_wstring(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_WSTRING(x) boost::lexical_cast<std::wstring>(x)
++#endif
++
+ static wxString get_history_string(json::Object &obj) {
+ 	wxString filename = to_wx(obj["filename"]);
+ 	if (filename.empty())
+@@ -87,7 +94,7 @@
+ 			int beg = (int64_t)(*it)["start"];
+ 			int end = (int64_t)(*it)["end"];
+ 			if (beg == end)
+-				lines += std::to_wstring(beg);
++				lines += TO_WSTRING(beg);
+ 			else
+ 				lines += wxString::Format("%d-%d", beg, end);
+ 			if (it + 1 != sel.end())

Added: head/multimedia/aegisub/files/patch-src__dialog_style_editor.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__dialog_style_editor.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,25 @@
+--- src/dialog_style_editor.cpp.orig
++++ src/dialog_style_editor.cpp
+@@ -62,6 +62,13 @@
+ #include <wx/sizer.h>
+ #include <wx/stattext.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_WSTRING(x) std::to_wstring(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_WSTRING(x) boost::lexical_cast<std::wstring>(x)
++#endif
++
+ /// Style rename helper that walks a file searching for a style and optionally
+ /// updating references to it
+ class StyleRenamer {
+@@ -160,7 +167,7 @@
+ 	SetIcon(GETICON(style_toolbutton_16));
+ 
+ 	// Prepare control values
+-	wxString EncodingValue = std::to_wstring(style->encoding);
++	wxString EncodingValue = TO_WSTRING(style->encoding);
+ 	wxString alignValues[9] = { "7", "8", "9", "4", "5", "6", "1", "2", "3" };
+ 
+ 	// Encoding options

Added: head/multimedia/aegisub/files/patch-src__ffmpegsource_common.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__ffmpegsource_common.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,25 @@
+--- src/ffmpegsource_common.cpp.orig
++++ src/ffmpegsource_common.cpp
+@@ -56,6 +56,13 @@
+ #include <wx/config.h>
+ #include <wx/choicdlg.h> // Keep this last so wxUSE_CHOICEDLG is set.
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ #ifdef _WIN32
+ #include <objbase.h>
+ 
+@@ -221,7 +228,7 @@
+ 	hash.process_bytes(filename.string().c_str(), filename.string().size());
+ 
+ 	// Generate the filename
+-	auto result = config::path->Decode("?local/ffms2cache/" + std::to_string(hash.checksum()) + "_" + std::to_string(len) + "_" + std::to_string(agi::fs::ModifiedTime(filename)) + ".ffindex");
++	auto result = config::path->Decode("?local/ffms2cache/" + TO_STRING(hash.checksum()) + "_" + TO_STRING(len) + "_" + TO_STRING(agi::fs::ModifiedTime(filename)) + ".ffindex");
+ 
+ 	// Ensure that folder exists
+ 	agi::fs::CreateDirectory(result.parent_path());

Added: head/multimedia/aegisub/files/patch-src__ffmpegsource_common.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__ffmpegsource_common.h	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,10 @@
+--- src/ffmpegsource_common.h.orig
++++ src/ffmpegsource_common.h
+@@ -34,6 +34,7 @@
+ 
+ #ifdef WITH_FFMS2
+ #include <map>
++#include <string>
+ 
+ #include <ffms.h>
+ 

Added: head/multimedia/aegisub/files/patch-src__frame_main.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__frame_main.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,10 @@
+--- src/frame_main.cpp.orig
++++ src/frame_main.cpp
+@@ -80,6 +80,7 @@
+ #include <wx/msgdlg.h>
+ #include <wx/statline.h>
+ #include <wx/sysopt.h>
++#include <wx/toolbar.h>
+ 
+ enum {
+ 	ID_APP_TIMER_STATUSCLEAR				= 12002

Added: head/multimedia/aegisub/files/patch-src__main.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__main.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,10 @@
+--- src/main.cpp.orig
++++ src/main.cpp
+@@ -69,6 +69,7 @@
+ #include <boost/locale.hpp>
+ #include <sstream>
+ 
++#include <wx/clipbrd.h>
+ #include <wx/config.h>
+ #include <wx/msgdlg.h>
+ #include <wx/stackwalk.h>

Added: head/multimedia/aegisub/files/patch-src__preferences_base.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__preferences_base.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,34 @@
+--- src/preferences_base.cpp.orig
++++ src/preferences_base.cpp
+@@ -42,6 +42,13 @@
+ #include <wx/stattext.h>
+ #include <wx/treebook.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_WSTRING(x) std::to_wstring(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_WSTRING(x) boost::lexical_cast<std::wstring>(x)
++#endif
++
+ #define OPTION_UPDATER(type, evttype, opt, body)                            \
+ 	class type {                                                            \
+ 		std::string name;                                                   \
+@@ -126,7 +133,7 @@
+ 		}
+ 
+ 		case agi::OptionValue::Type_Int: {
+-			wxSpinCtrl *sc = new wxSpinCtrl(this, -1, std::to_wstring((int)opt->GetInt()), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, min, max, opt->GetInt());
++			wxSpinCtrl *sc = new wxSpinCtrl(this, -1, TO_WSTRING((int)opt->GetInt()), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, min, max, opt->GetInt());
+ 			sc->Bind(wxEVT_SPINCTRL, IntUpdater(opt_name, parent));
+ 			Add(flex, name, sc);
+ 			return sc;
+@@ -240,7 +247,7 @@
+ 	font_name->SetMinSize(wxSize(160, -1));
+ 	font_name->Bind(wxEVT_TEXT, StringUpdater(face_opt->GetName().c_str(), parent));
+ 
+-	wxSpinCtrl *font_size = new wxSpinCtrl(this, -1, std::to_wstring((int)size_opt->GetInt()), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 3, 42, size_opt->GetInt());
++	wxSpinCtrl *font_size = new wxSpinCtrl(this, -1, TO_WSTRING((int)size_opt->GetInt()), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 3, 42, size_opt->GetInt());
+ 	font_size->Bind(wxEVT_SPINCTRL, IntUpdater(size_opt->GetName().c_str(), parent));
+ 
+ 	wxButton *pick_btn = new wxButton(this, -1, _("Choose..."));

Added: head/multimedia/aegisub/files/patch-src__resolution_resampler.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__resolution_resampler.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,30 @@
+--- src/resolution_resampler.cpp.orig
++++ src/resolution_resampler.cpp
+@@ -29,9 +29,15 @@
+ 
+ #include <algorithm>
+ #include <boost/algorithm/string/predicate.hpp>
+-#include <boost/lexical_cast.hpp>
+ #include <functional>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ enum {
+ 	LEFT = 0,
+ 	RIGHT = 1,
+@@ -175,8 +181,8 @@
+ 	for (auto& line : ass->Line)
+ 		resample_line(&state, line);
+ 
+-	ass->SetScriptInfo("PlayResX", std::to_string(settings.script_x));
+-	ass->SetScriptInfo("PlayResY", std::to_string(settings.script_y));
++	ass->SetScriptInfo("PlayResX", TO_STRING(settings.script_x));
++	ass->SetScriptInfo("PlayResY", TO_STRING(settings.script_y));
+ 
+ 	ass->Commit(_("resolution resampling"), AssFile::COMMIT_SCRIPTINFO | AssFile::COMMIT_DIAG_FULL);
+ }

Added: head/multimedia/aegisub/files/patch-src__subs_edit_box.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__subs_edit_box.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,25 @@
+--- src/subs_edit_box.cpp.orig
++++ src/subs_edit_box.cpp
+@@ -71,6 +71,13 @@
+ #include <wx/sizer.h>
+ #include <wx/spinctrl.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_WSTRING(x) std::to_wstring(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_WSTRING(x) boost::lexical_cast<std::wstring>(x)
++#endif
++
+ namespace {
+ 
+ /// Work around wxGTK's fondness for generating events from ChangeValue
+@@ -324,7 +331,7 @@
+ 	if (type & AssFile::COMMIT_DIAG_META) {
+ 		layer->SetValue(line->Layer);
+ 		for (size_t i = 0; i < margin.size(); ++i)
+-			change_value(margin[i], std::to_wstring(line->Margin[i]));
++			change_value(margin[i], TO_WSTRING(line->Margin[i]));
+ 		comment_box->SetValue(line->Comment);
+ 		style_box->Select(style_box->FindString(to_wx(line->Style)));
+ 

Added: head/multimedia/aegisub/files/patch-src__subs_preview.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__subs_preview.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,27 @@
+--- src/subs_preview.cpp.orig
++++ src/subs_preview.cpp
+@@ -48,6 +48,13 @@
+ #include <wx/dcclient.h>
+ #include <wx/msgdlg.h>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ SubtitlesPreview::SubtitlesPreview(wxWindow *parent, wxSize size, int winStyle, agi::Color col)
+ : wxWindow(parent, -1, wxDefaultPosition, size, winStyle)
+ , style(new AssStyle)
+@@ -141,8 +148,8 @@
+ 			"No subtitles provider", wxOK | wxICON_ERROR | wxCENTER);
+ 	}
+ 
+-	sub_file->SetScriptInfo("PlayResX", std::to_string(w));
+-	sub_file->SetScriptInfo("PlayResY", std::to_string(h));
++	sub_file->SetScriptInfo("PlayResX", TO_STRING(w));
++	sub_file->SetScriptInfo("PlayResY", TO_STRING(h));
+ 
+ 	UpdateBitmap();
+ }

Added: head/multimedia/aegisub/files/patch-src__subtitle_format_srt.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__subtitle_format_srt.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,25 @@
+--- src/subtitle_format_srt.cpp.orig
++++ src/subtitle_format_srt.cpp
+@@ -54,6 +54,13 @@
+ #include <boost/regex.hpp>
+ #include <map>
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_STRING(x) std::to_string(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_STRING(x) boost::lexical_cast<std::string>(x)
++#endif
++
+ DEFINE_SIMPLE_EXCEPTION(SRTParseError, SubtitleFormatParseError, "subtitle_io/parse/srt")
+ 
+ namespace {
+@@ -481,7 +488,7 @@
+ 	// Write lines
+ 	int i=0;
+ 	for (auto current : copy.Line | agi::of_type<AssDialogue>()) {
+-		file.WriteLineToFile(std::to_string(++i));
++		file.WriteLineToFile(TO_STRING(++i));
+ 		file.WriteLineToFile(WriteSRTTime(current->Start) + " --> " + WriteSRTTime(current->End));
+ 		file.WriteLineToFile(ConvertTags(current));
+ 		file.WriteLineToFile("");

Added: head/multimedia/aegisub/files/patch-src__timeedit_ctrl.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/aegisub/files/patch-src__timeedit_ctrl.cpp	Sat Jul  5 17:46:36 2014	(r360785)
@@ -0,0 +1,25 @@
+--- src/timeedit_ctrl.cpp.orig
++++ src/timeedit_ctrl.cpp
+@@ -52,6 +52,13 @@
+ 
+ #define TimeEditWindowStyle
+ 
++#ifdef _LIBCPP_VERSION
++#define TO_WSTRING(x) std::to_wstring(x)
++#else
++#include <boost/lexical_cast.hpp>
++#define TO_WSTRING(x) boost::lexical_cast<std::wstring>(x)
++#endif
++
+ enum {
+ 	Time_Edit_Copy = 1320,
+ 	Time_Edit_Paste
+@@ -117,7 +124,7 @@
+ 
+ void TimeEdit::UpdateText() {
+ 	if (byFrame)
+-		ChangeValue(std::to_wstring(c->videoController->FrameAtTime(time, isEnd ? agi::vfr::END : agi::vfr::START)));
++		ChangeValue(TO_WSTRING(c->videoController->FrameAtTime(time, isEnd ? agi::vfr::END : agi::vfr::START)));
+ 	else

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-ports-all mailing list