aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--devel/godot/Makefile70
-rw-r--r--devel/godot/distinfo10
-rw-r--r--devel/godot/files/patch-SConstruct35
-rw-r--r--devel/godot/files/patch-drivers_SCsub14
-rw-r--r--devel/godot/files/patch-drivers_unix_os__unix.cpp53
-rw-r--r--devel/godot/files/patch-modules_mono_SCsub11
-rw-r--r--devel/godot/files/patch-modules_speex_audio__stream__speex.cpp10
-rw-r--r--devel/godot/files/patch-platform_x11_detect.py71
-rw-r--r--devel/godot/files/patch-platform_x11_os__x11.cpp13
-rw-r--r--devel/godot/files/patch-platform_x11_os__x11.h21
-rw-r--r--devel/godot/files/patch-scene_gui_rich__text__label.cpp14
-rw-r--r--devel/godot/files/patch-thirdparty_thekla__atlas_nvcore_Memory.cpp22
-rw-r--r--devel/godot/files/patch-thirdparty_thekla__atlas_nvcore_StdStream.h40
13 files changed, 224 insertions, 160 deletions
diff --git a/devel/godot/Makefile b/devel/godot/Makefile
index 2ed2264b5c7e..f4eaaa859c7a 100644
--- a/devel/godot/Makefile
+++ b/devel/godot/Makefile
@@ -2,9 +2,8 @@
# $FreeBSD$
PORTNAME= godot
-PORTVERSION= 2.1.2
-PORTREVISION= 3
-DISTVERSIONSUFFIX= -stable
+PORTVERSION= 3.0.2
+DISTVERSIONSUFFIX= -stable
CATEGORIES= devel games
MAINTAINER= FreeBSD@Shaneware.biz
@@ -13,15 +12,11 @@ COMMENT?= Game runtime engine
LICENSE= MIT CC-BY-3.0
LICENSE_COMB= multi
LICENSE_FILE_CC-BY-3.0= ${WRKSRC}/LOGO_LICENSE.md
-LICENSE_FILE_MIT= ${WRKSRC}/LICENSE.md
-
-BROKEN_SSL= openssl-devel
-BROKEN_SSL_REASON_openssl-devel= member access into incomplete type 'BIO' (aka 'bio_st')
+LICENSE_FILE_MIT= ${WRKSRC}/LICENSE.txt
+BUILD_DEPENDS= yasm:devel/yasm
LIB_DEPENDS= libfreetype.so:print/freetype2 \
- libpng.so:graphics/png \
- libmpcdec.so:audio/musepack \
- libspeex.so:audio/speex
+ libpng.so:graphics/png
RUN_DEPENDS= xdg-user-dir:devel/xdg-user-dirs \
xdg-open:devel/xdg-utils \
xmessage:x11/xmessage
@@ -29,23 +24,26 @@ RUN_DEPENDS= xdg-user-dir:devel/xdg-user-dirs \
USE_GITHUB= yes
GH_ACCOUNT= godotengine
-USES= compiler:c++11-lib pkgconfig scons ssl
-USE_XORG= x11 xcursor xinerama xrandr
-USE_GL= gl
-
-MAKE_ARGS+= platform=x11 builtin_speex=no builtin_libmpcdec=no
-MAKE_ARGS+= ${MAKE_ARGS_${CHOSEN_COMPILER_TYPE}}
-MAKE_ARGS_clang= use_llvm=yes
-CXXFLAGS+= -DGLEW_NO_GLU -DRTAUDIO_ENABLED
-CXXFLAGS_i386= ${CXXFLAGS_i386_${CHOSEN_COMPILER_TYPE}}
+# on 10.4 using clang34 fails - so we want to use clang50
+# gl already needs clang50 so this shouldn't add any overhead
+USES= compiler:c++14-lang pkgconfig scons ssl
+USE_XORG= x11 xcursor xi xinerama xrandr
+USE_GL= gl glew glu
+
+MAKE_ARGS+= platform=x11 builtin_libpng=False builtin_openssl=False
+MAKE_ARGS+= ${MAKE_ARGS_${CHOSEN_COMPILER_TYPE}}
+MAKE_ARGS_clang= use_llvm=True
+CXXFLAGS+= -DRTAUDIO_ENABLED
+CXXFLAGS_i386= ${CXXFLAGS_i386_${CHOSEN_COMPILER_TYPE}}
CXXFLAGS_i386_gcc= -march=i586
CXXFLAGS_aarch64= -DNO_THREADS
CXXFLAGS_sparc64= -DNO_THREADS
CXXFLAGS_mips= -DNO_THREADS
CXXFLAGS_mips64= -DNO_THREADS
-LDFLAGS+= -lspeex -lmpcdec
-OPTIONS_DEFINE= EXAMPLES TOOLS
+# option MONO can be built but is not stable enough to use yet
+# for now leave it out as an option
+OPTIONS_DEFINE= EXAMPLES TOOLS
OPTIONS_DEFAULT= OSS
# Moved to devel/godot-tools
OPTIONS_EXCLUDE?= EXAMPLES TOOLS
@@ -54,24 +52,27 @@ OPTIONS_GROUP_AUDIO= ALSA OSS PULSEAUDIO
AUDIO_DESC= Audio support
ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
-ALSA_MAKE_ARGS= alsa=yes
+ALSA_MAKE_ARGS= alsa=True
EXAMPLES_GH_PROJECT= godot-demo-projects:DEMOS
-# Branch HEAD for PORTVERSION
-EXAMPLES_GH_TAGNAME= dfa1274:DEMOS
+# master at 31/1
+EXAMPLES_GH_TAGNAME= d69cc10a0b8a:DEMOS
EXAMPLES_PORTEXAMPLES= *
-OSS_MAKE_ARGS= oss=yes
+# while mono support can build it isn't stable enough to be used yet
+MONO_LIB_DEPENDS= libmonosgen-2.0.so:lang/mono
+MONO_MAKE_ARGS= module_mono_enabled=True
+OSS_MAKE_ARGS= oss=True
PULSEAUDIO_LIB_DEPENDS= libpulse-simple.so:audio/pulseaudio
-PULSEAUDIO_MAKE_ARGS= pulseaudio=yes
-TOOLS_DESC= Include development tools (IDE)
-TOOLS_MAKE_ARGS= target=release_debug tools=yes
-TOOLS_MAKE_ARGS_OFF= target=release tools=no
+PULSEAUDIO_MAKE_ARGS= pulseaudio=True
+TOOLS_DESC= Include development tools (IDE)
+TOOLS_MAKE_ARGS= target=release_debug tools=True
+TOOLS_MAKE_ARGS_OFF= target=release tools=False
TOOLS_DESKTOP_ENTRIES= "Godot" "${COMMENT}" "${GODOTFILE}" \
"${GODOTFILE}" "Development;IDE;" ""
TOOLS_PLIST_FILES= share/pixmaps/${GODOTFILE}.png \
share/pixmaps/${GODOTFILE}.svg
GODOTFILE= ${PORTNAME}${PKGNAMESUFFIX}
-PLIST_FILES= bin/${GODOTFILE}
+PLIST_FILES= bin/${GODOTFILE}
.ifmake makesum
# Always include optional distfiles
@@ -84,10 +85,19 @@ post-patch:
@${REINPLACE_CMD} -e 's|/usr/bin|${PREFIX}/bin|' \
${WRKSRC}/platform/x11/os_x11.cpp
+pre-build-MONO-on:
+ @(cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} \
+ ${_MAKE_JOBS} ${MAKE_ARGS:C,^${DESTDIRNAME}=.*,,g} \
+ target=release_debug tools=True mono_glue=False)
+ @(cd ${WRKSRC} && ${FIND} ${WRKSRC}/bin -name 'godot*' -exec {} \
+ --generate-mono-glue modules/mono/glue \; && \
+ ${FIND} ${WRKSRC}/bin -name 'godot*' -delete)
+
# The official godot binary name reflects options used to compile
# We just want a simple name matching the portname
# This gives us bin/godot for runtime and bin/godot-tools for the IDE
do-install:
+ @${RM} ${WRKSRC}/bin/*.debugsymbols
cd ${WRKSRC}/bin && ${INSTALL_PROGRAM} godot.x11* \
${STAGEDIR}/${PREFIX}/bin/${GODOTFILE}
diff --git a/devel/godot/distinfo b/devel/godot/distinfo
index 6d3d320b220a..25948b69b789 100644
--- a/devel/godot/distinfo
+++ b/devel/godot/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1485416056
-SHA256 (godotengine-godot-2.1.2-stable_GH0.tar.gz) = 29b3131449f8ca908be800c4c07020efaa9f90a29b6bc1be8a18a331dc34b49a
-SIZE (godotengine-godot-2.1.2-stable_GH0.tar.gz) = 14399692
-SHA256 (godotengine-godot-demo-projects-dfa1274_GH0.tar.gz) = 42420f7f473b1391a13f226473d1cc850605f24d2865220e4c5acde05f1c340c
-SIZE (godotengine-godot-demo-projects-dfa1274_GH0.tar.gz) = 18423807
+TIMESTAMP = 1520319042
+SHA256 (godotengine-godot-3.0.2-stable_GH0.tar.gz) = 15bc91dcbc92fe49624118678fcab119ff332dc295b25f4921700a4ee498b651
+SIZE (godotengine-godot-3.0.2-stable_GH0.tar.gz) = 18812660
+SHA256 (godotengine-godot-demo-projects-d69cc10a0b8a_GH0.tar.gz) = b798d0bb56a643fdb175df463990904523495dd5546bc00bbe762e0645b7c94a
+SIZE (godotengine-godot-demo-projects-d69cc10a0b8a_GH0.tar.gz) = 140126782
diff --git a/devel/godot/files/patch-SConstruct b/devel/godot/files/patch-SConstruct
index 3716b3fe6f87..e3b50a729f1b 100644
--- a/devel/godot/files/patch-SConstruct
+++ b/devel/godot/files/patch-SConstruct
@@ -1,7 +1,7 @@
---- SConstruct.orig 2016-11-15 18:44:21 UTC
+--- SConstruct.orig 2017-12-28 05:14:45 UTC
+++ SConstruct
-@@ -65,7 +65,7 @@ elif (os.name == "nt"):
- if (os.getenv("VSINSTALLDIR") == None or platform_arg == "android"):
+@@ -68,7 +68,7 @@ elif (os.name == "nt"):
+ if (os.getenv("VCINSTALLDIR") == None or platform_arg == "android" or platform_arg == "javascript"):
custom_tools = ['mingw']
-env_base = Environment(tools=custom_tools)
@@ -9,28 +9,29 @@
if 'TERM' in os.environ:
env_base['ENV']['TERM'] = os.environ['TERM']
env_base.AppendENVPath('PATH', os.getenv('PATH'))
-@@ -247,15 +247,16 @@ if selected_platform in platform_list:
+@@ -297,17 +297,20 @@ if selected_platform in platform_list:
if env["extra_suffix"] != '':
env.extra_suffix += '.' + env["extra_suffix"]
- CCFLAGS = env.get('CCFLAGS', '')
- env['CCFLAGS'] = ''
--
-- env.Append(CCFLAGS=string.split(str(CCFLAGS)))
--
-- CFLAGS = env.get('CFLAGS', '')
-- env['CFLAGS'] = ''
--
+ env['CC'] = os.environ['CC']
+ env['CXX'] = os.environ['CXX']
-+
-+ CFLAGS = os.environ['CFLAGS']
-+ env['CFLAGS'] = []
- env.Append(CFLAGS=string.split(str(CFLAGS)))
-+
++
+ CCFLAGS = os.environ['CXXFLAGS']
+ env['CCFLAGS'] = []
-+ env.Append(CCFLAGS=string.split(str(CCFLAGS)))
- LINKFLAGS = env.get('LINKFLAGS', '')
+ env.Append(CCFLAGS=str(CCFLAGS).split())
+
+- CFLAGS = env.get('CFLAGS', '')
+- env['CFLAGS'] = ''
++ CFLAGS = os.environ['CFLAGS']
++ env['CFLAGS'] = []
+
+ env.Append(CFLAGS=str(CFLAGS).split())
+
+- LINKFLAGS = env.get('LINKFLAGS', '')
++ LINKFLAGS = os.environ['LDFLAGS']
env['LINKFLAGS'] = ''
+
+ env.Append(LINKFLAGS=str(LINKFLAGS).split())
diff --git a/devel/godot/files/patch-drivers_SCsub b/devel/godot/files/patch-drivers_SCsub
index ada05634533e..6befde9511f1 100644
--- a/devel/godot/files/patch-drivers_SCsub
+++ b/devel/godot/files/patch-drivers_SCsub
@@ -1,11 +1,11 @@
--- drivers/SCsub.orig 2016-11-30 21:41:21 UTC
+++ drivers/SCsub
-@@ -14,7 +14,7 @@ SConscript('windows/SCsub')
- # Sounds drivers
- SConscript('alsa/SCsub')
- SConscript('pulseaudio/SCsub')
--if (env["platform"] == "windows"):
-+if (env["platform"] == "windows") or (env["platform"] == "x11"):
+@@ -18,6 +18,8 @@ SConscript('pulseaudio/SCsub')
+ if (env["platform"] == "windows"):
SConscript("rtaudio/SCsub")
+ SConscript("wasapi/SCsub")
++if env["platform"] == "x11":
++ SConscript("rtaudio/SCsub")
+ if env['xaudio2']:
+ SConscript("xaudio2/SCsub")
- # Graphics drivers
diff --git a/devel/godot/files/patch-drivers_unix_os__unix.cpp b/devel/godot/files/patch-drivers_unix_os__unix.cpp
index e052b6f903e5..be00fda4e39a 100644
--- a/devel/godot/files/patch-drivers_unix_os__unix.cpp
+++ b/devel/godot/files/patch-drivers_unix_os__unix.cpp
@@ -1,50 +1,11 @@
---- drivers/unix/os_unix.cpp.orig 2016-08-09 07:52:15 UTC
+--- drivers/unix/os_unix.cpp.orig 2018-02-01 19:27:25 UTC
+++ drivers/unix/os_unix.cpp
-@@ -50,6 +50,7 @@
+@@ -235,7 +235,7 @@ OS::TimeZoneInfo OS_Unix::get_time_zone_
- #ifdef __FreeBSD__
- #include <sys/param.h>
-+#include <sys/sysctl.h>
- #endif
- #include <stdarg.h>
- #include <sys/time.h>
-@@ -371,17 +372,7 @@ Error OS_Unix::execute(const String& p_p
- args.push_back((char*)cs[i].get_data());// shitty C cast
- args.push_back(0);
+ void OS_Unix::delay_usec(uint32_t p_usec) const {
--#ifdef __FreeBSD__
-- if(p_path.find("/")) {
-- // exec name contains path so use it
-- execv(p_path.utf8().get_data(),&args[0]);
-- }else{
-- // use program name and search through PATH to find it
-- execvp(getprogname(),&args[0]);
-- }
--#else
- execv(p_path.utf8().get_data(),&args[0]);
--#endif
- // still alive? something failed..
- fprintf(stderr,"**ERROR** OS_Unix::execute - Could not create child process while executing: %s\n",p_path.utf8().get_data());
- abort();
-@@ -503,11 +494,16 @@ String OS_Unix::get_executable_path() co
+- struct timespec rem = { p_usec / 1000000, (p_usec % 1000000) * 1000 };
++ struct timespec rem = { time_t(p_usec) / 1000000, (long(p_usec) % 1000000) * 1000 };
+ while (nanosleep(&rem, &rem) == EINTR) {
}
- return b;
- #elif defined(__FreeBSD__)
-- char resolved_path[MAXPATHLEN];
--
-- realpath(OS::get_executable_path().utf8().get_data(), resolved_path);
--
-- return String(resolved_path);
-+ int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
-+ char buf[MAXPATHLEN];
-+ size_t len = sizeof(buf);
-+ if (sysctl(mib, 4, buf, &len, NULL, 0) != 0) {
-+ WARN_PRINT("Couldn't get executable path from sysctl");
-+ return OS::get_executable_path();
-+ }
-+ String b;
-+ b.parse_utf8(buf);
-+ return b;
- #elif defined(__APPLE__)
- char temp_path[1];
- uint32_t buff_size=1;
+ }
diff --git a/devel/godot/files/patch-modules_mono_SCsub b/devel/godot/files/patch-modules_mono_SCsub
new file mode 100644
index 000000000000..12eae7572fa0
--- /dev/null
+++ b/devel/godot/files/patch-modules_mono_SCsub
@@ -0,0 +1,11 @@
+--- modules/mono/SCsub.orig 2018-01-03 10:12:46 UTC
++++ modules/mono/SCsub
+@@ -147,7 +147,7 @@ def mono_build_solution(source, target,
+ msbuild_path = msbuild_info[0]
+ framework_path_override = msbuild_info[1]
+ else:
+- msbuild_path = find_msbuild_unix('msbuild')
++ msbuild_path = find_msbuild_unix('xbuild')
+ if msbuild_path is None:
+ xbuild_fallback = env['xbuild_fallback']
+
diff --git a/devel/godot/files/patch-modules_speex_audio__stream__speex.cpp b/devel/godot/files/patch-modules_speex_audio__stream__speex.cpp
deleted file mode 100644
index b07c5147d157..000000000000
--- a/devel/godot/files/patch-modules_speex_audio__stream__speex.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
---- modules/speex/audio_stream_speex.cpp.orig 2016-11-28 17:58:00 UTC
-+++ modules/speex/audio_stream_speex.cpp
-@@ -28,7 +28,6 @@
- /*************************************************************************/
- #include "audio_stream_speex.h"
-
--#include "os_support.h"
- #include "os/os.h"
- #define READ_CHUNK 1024
-
diff --git a/devel/godot/files/patch-platform_x11_detect.py b/devel/godot/files/patch-platform_x11_detect.py
index 49a99c64b261..7d16fd12a491 100644
--- a/devel/godot/files/patch-platform_x11_detect.py
+++ b/devel/godot/files/patch-platform_x11_detect.py
@@ -1,66 +1,47 @@
---- platform/x11/detect.py.orig 2016-11-15 18:44:21 UTC
+--- platform/x11/detect.py.orig 2017-12-28 05:14:45 UTC
+++ platform/x11/detect.py
-@@ -31,11 +31,6 @@ def can_build():
- print("X11 not found.. x11 disabled.")
- return False
+@@ -52,7 +52,9 @@ def get_opts():
+ BoolVariable('use_static_cpp', 'Link stdc++ statically', False),
+ BoolVariable('use_sanitizer', 'Use LLVM compiler address sanitizer', False),
+ BoolVariable('use_leak_sanitizer', 'Use LLVM compiler memory leaks sanitizer (implies use_sanitizer)', False),
+- BoolVariable('pulseaudio', 'Detect & use pulseaudio', True),
++ BoolVariable('alsa','Detect & Use alsa audio',False),
++ BoolVariable('oss','Detect & Use OSS audio',False),
++ BoolVariable('pulseaudio', 'Detect & Use pulseaudio', False),
+ BoolVariable('udev', 'Use udev for gamepad connection callbacks', False),
+ EnumVariable('debug_symbols', 'Add debug symbols to release version', 'yes', ('yes', 'no', 'full')),
+ BoolVariable('separate_debug_symbols', 'Create a separate file with the debug symbols', False),
+@@ -154,7 +156,7 @@ def configure(env):
+ # FIXME: Check for existence of the libs before parsing their flags with pkg-config
-- ssl_error = os.system("pkg-config openssl --modversion > /dev/null ")
-- if (ssl_error):
-- print("OpenSSL not found.. x11 disabled.")
-- return False
--
- x11_error = os.system("pkg-config xcursor --modversion > /dev/null ")
- if (x11_error):
- print("xcursor not found.. x11 disabled.")
-@@ -61,7 +56,9 @@ def get_opts():
- ('use_static_cpp', 'link stdc++ statically', 'no'),
- ('use_sanitizer', 'Use llvm compiler sanitize address', 'no'),
- ('use_leak_sanitizer', 'Use llvm compiler sanitize memory leaks', 'no'),
-- ('pulseaudio', 'Detect & Use pulseaudio', 'yes'),
-+ ('alsa','Detect & Use alsa audio','no'),
-+ ('oss','Detect & Use OSS audio','no'),
-+ ('pulseaudio', 'Detect & Use pulseaudio', 'no'),
- ('udev', 'Use udev for gamepad connection callbacks', 'no'),
- ('debug_release', 'Add debug symbols to release version', 'no'),
- ]
-@@ -134,7 +131,7 @@ def configure(env):
- env.ParseConfig('pkg-config xrandr --cflags --libs')
-
- if (env['builtin_openssl'] == 'no'):
+ if not env['builtin_openssl']:
- env.ParseConfig('pkg-config openssl --cflags --libs')
+ env.ParseConfig('echo -lssl -lcrypto')
- if (env['builtin_libwebp'] == 'no'):
+ if not env['builtin_libwebp']:
env.ParseConfig('pkg-config libwebp --cflags --libs')
-@@ -173,12 +170,13 @@ def configure(env):
- if (env['builtin_glew'] == 'no'):
- env.ParseConfig('pkg-config glew --cflags --libs')
+@@ -226,12 +228,18 @@ def configure(env):
+
+ ## Flags
-- if os.system("pkg-config --exists alsa") == 0:
+- if (os.system("pkg-config --exists alsa") == 0): # 0 means found
- print("Enabling ALSA")
- env.Append(CPPFLAGS=["-DALSA_ENABLED"])
- env.ParseConfig('pkg-config alsa --cflags --libs')
- else:
- print("ALSA libraries not found, disabling driver")
-+ if (env["alsa"]=="yes"):
++ if env['alsa']:
+ if os.system("pkg-config --exists alsa")==0:
+ print("Enabling ALSA")
+ env.Append(CPPFLAGS=["-DALSA_ENABLED"])
+ env.Append(LIBS=['asound'])
+ else:
+ print("ALSA libraries not found, disabling driver")
-
- if (platform.system() == "Linux"):
- env.Append(CPPFLAGS=["-DJOYDEV_ENABLED"])
-@@ -193,6 +191,11 @@ def configure(env):
- else:
- print("libudev development libraries not found, disabling udev support")
-
-+ if (env["oss"]=="yes"):
++
++ if env['oss']:
+ print("Enabling OSS Audio")
+ env.Append(CPPFLAGS=["-DOSS_ENABLED"])
+ env.Append(CCFLAGS=['-Ithirdparty/rtaudio'])
-+
- if (env["pulseaudio"] == "yes"):
- if not os.system("pkg-config --exists libpulse-simple"):
- print("Enabling PulseAudio")
+
+ if env['pulseaudio']:
+ if (os.system("pkg-config --exists libpulse-simple") == 0): # 0 means found
diff --git a/devel/godot/files/patch-platform_x11_os__x11.cpp b/devel/godot/files/patch-platform_x11_os__x11.cpp
new file mode 100644
index 000000000000..267f6b9ddf5a
--- /dev/null
+++ b/devel/godot/files/patch-platform_x11_os__x11.cpp
@@ -0,0 +1,13 @@
+--- platform/x11/os_x11.cpp.orig 2018-01-03 04:32:19 UTC
++++ platform/x11/os_x11.cpp
+@@ -2469,6 +2469,10 @@ OS_X11::OS_X11() {
+ AudioDriverManager::add_driver(&driver_pulseaudio);
+ #endif
+
++#ifdef RTAUDIO_ENABLED
++ AudioDriverManager::add_driver(&driver_rtaudio);
++#endif
++
+ #ifdef ALSA_ENABLED
+ AudioDriverManager::add_driver(&driver_alsa);
+ #endif
diff --git a/devel/godot/files/patch-platform_x11_os__x11.h b/devel/godot/files/patch-platform_x11_os__x11.h
new file mode 100644
index 000000000000..0eb9a553fd82
--- /dev/null
+++ b/devel/godot/files/patch-platform_x11_os__x11.h
@@ -0,0 +1,21 @@
+--- platform/x11/os_x11.h.orig 2018-01-03 09:26:19 UTC
++++ platform/x11/os_x11.h
+@@ -38,6 +38,7 @@
+ //#include "servers/visual/visual_server_wrap_mt.h"
+ #include "drivers/alsa/audio_driver_alsa.h"
+ #include "drivers/pulseaudio/audio_driver_pulseaudio.h"
++#include "drivers/rtaudio/audio_driver_rtaudio.h"
+ #include "joypad_linux.h"
+ #include "main/input_default.h"
+ #include "power_x11.h"
+@@ -166,6 +167,10 @@ class OS_X11 : public OS_Unix {
+ AudioDriverPulseAudio driver_pulseaudio;
+ #endif
+
++#ifdef RTAUDIO_ENABLED
++ AudioDriverRtAudio driver_rtaudio;
++#endif
++
+ Atom net_wm_icon;
+
+ PowerX11 *power_manager;
diff --git a/devel/godot/files/patch-scene_gui_rich__text__label.cpp b/devel/godot/files/patch-scene_gui_rich__text__label.cpp
new file mode 100644
index 000000000000..91184e43704f
--- /dev/null
+++ b/devel/godot/files/patch-scene_gui_rich__text__label.cpp
@@ -0,0 +1,14 @@
+--- scene/gui/rich_text_label.cpp.orig 2018-01-10 13:20:47 UTC
++++ scene/gui/rich_text_label.cpp
+@@ -806,9 +806,9 @@ void RichTextLabel::_gui_input(Ref<Input
+ // Erase previous selection.
+ if (selection.active) {
+ selection.from = NULL;
+- selection.from_char = NULL;
++ selection.from_char = 0;
+ selection.to = NULL;
+- selection.to_char = NULL;
++ selection.to_char = 0;
+ selection.active = false;
+
+ update();
diff --git a/devel/godot/files/patch-thirdparty_thekla__atlas_nvcore_Memory.cpp b/devel/godot/files/patch-thirdparty_thekla__atlas_nvcore_Memory.cpp
new file mode 100644
index 000000000000..3c6a1be40023
--- /dev/null
+++ b/devel/godot/files/patch-thirdparty_thekla__atlas_nvcore_Memory.cpp
@@ -0,0 +1,22 @@
+--- thirdparty/thekla_atlas/nvcore/Memory.cpp.orig 2017-12-29 15:53:28 UTC
++++ thirdparty/thekla_atlas/nvcore/Memory.cpp
+@@ -6,10 +6,6 @@
+
+ #include <stdlib.h>
+
+-#ifdef NV_OS_LINUX
+-#include <malloc.h>
+-#endif
+-
+ #define USE_EFENCE 0
+
+ #if USE_EFENCE
+@@ -130,7 +126,7 @@ void * nv::aligned_malloc(size_t size, s
+
+ #if NV_OS_WIN32 || NV_OS_DURANGO
+ return _aligned_malloc(size, alignment);
+-#elif NV_OS_DARWIN && !NV_OS_IOS
++#elif (NV_OS_FREEBSD || NV_OS_DARWIN) && !NV_OS_IOS
+ void * ptr = NULL;
+ posix_memalign(&ptr, alignment, size);
+ return ptr;
diff --git a/devel/godot/files/patch-thirdparty_thekla__atlas_nvcore_StdStream.h b/devel/godot/files/patch-thirdparty_thekla__atlas_nvcore_StdStream.h
new file mode 100644
index 000000000000..0fdf268c2689
--- /dev/null
+++ b/devel/godot/files/patch-thirdparty_thekla__atlas_nvcore_StdStream.h
@@ -0,0 +1,40 @@
+--- thirdparty/thekla_atlas/nvcore/StdStream.h.orig 2017-12-29 19:15:48 UTC
++++ thirdparty/thekla_atlas/nvcore/StdStream.h
+@@ -160,14 +160,14 @@ namespace nv
+ nvDebugCheck(m_fp != NULL);
+ #if NV_OS_WIN32
+ return (uint)_fwrite_nolock(data, 1, len, m_fp);
+-#elif NV_OS_LINUX
+- return (uint)fwrite_unlocked(data, 1, len, m_fp);
+-#elif NV_OS_DARWIN
++#elif NV_OS_DARWIN || NV_OS_FREEBSD || NV_OS_OPENBSD
+ // @@ No error checking, always returns len.
+ for (uint i = 0; i < len; i++) {
+ putc_unlocked(((char *)data)[i], m_fp);
+ }
+ return len;
++#elif NV_OS_LINUX
++ return (uint)fwrite_unlocked(data, 1, len, m_fp);
+ #else
+ return (uint)fwrite(data, 1, len, m_fp);
+ #endif
+@@ -210,9 +210,7 @@ namespace nv
+ nvDebugCheck(m_fp != NULL);
+ #if NV_OS_WIN32
+ return (uint)_fread_nolock(data, 1, len, m_fp);
+-#elif NV_OS_LINUX
+- return (uint)fread_unlocked(data, 1, len, m_fp);
+-#elif NV_OS_DARWIN
++#elif NV_OS_DARWIN || NV_OS_FREEBSD || NV_OS_OPENBSD
+ // This is rather lame. Not sure if it's faster than the locked version.
+ for (uint i = 0; i < len; i++) {
+ ((char *)data)[i] = getc_unlocked(m_fp);
+@@ -221,6 +219,8 @@ namespace nv
+ }
+ }
+ return len;
++#elif NV_OS_LINUX
++ return (uint)fread_unlocked(data, 1, len, m_fp);
+ #else
+ return (uint)fread(data, 1, len, m_fp);
+ #endif