summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
Diffstat (limited to 'misc')
-rw-r--r--misc/dist/html/default.html27
-rwxr-xr-xmisc/dist/ios_xcode/godot.iphone.debug.fat0
-rwxr-xr-xmisc/dist/ios_xcode/godot.iphone.release.arm0
-rwxr-xr-xmisc/dist/ios_xcode/godot.iphone.release.arm640
-rwxr-xr-xmisc/dist/ios_xcode/godot.iphone.release.fat0
-rw-r--r--misc/dist/ios_xcode/godot_ios.xcodeproj/project.pbxproj91
-rw-r--r--misc/dist/ios_xcode/godot_ios/dummy.cpp1
-rw-r--r--misc/dist/ios_xcode/godot_ios/dylibs/empty1
-rw-r--r--misc/dist/ios_xcode/godot_ios/export_options.plist (renamed from misc/dist/ios_xcode/export_options.plist)10
-rw-r--r--misc/dist/ios_xcode/godot_ios/godot_ios-Info.plist3
-rw-r--r--misc/dist/ios_xcode/godot_ios/main.m39
-rw-r--r--[-rwxr-xr-x]misc/dist/ios_xcode/libgodot.iphone.debug.fat.a (renamed from misc/dist/ios_xcode/godot.iphone.debug.arm)0
-rw-r--r--[-rwxr-xr-x]misc/dist/ios_xcode/libgodot.iphone.release.fat.a (renamed from misc/dist/ios_xcode/godot.iphone.debug.arm64)0
-rwxr-xr-xmisc/travis/android-tools-linux.sh107
-rwxr-xr-xmisc/travis/android-tools-osx.sh107
-rwxr-xr-xmisc/travis/ccache-osx.sh43
-rwxr-xr-xmisc/travis/scons-local-osx.sh18
17 files changed, 370 insertions, 77 deletions
diff --git a/misc/dist/html/default.html b/misc/dist/html/default.html
index 9fae34f97e..0f78fc640e 100644
--- a/misc/dist/html/default.html
+++ b/misc/dist/html/default.html
@@ -225,12 +225,11 @@ $GODOT_HEAD_INCLUDE
<script type="text/javascript" src="$GODOT_BASENAME.js"></script>
<script type="text/javascript">//<![CDATA[
- var game = new Engine;
+ var engine = new Engine;
(function() {
const BASENAME = '$GODOT_BASENAME';
- const MEMORY_SIZE = $GODOT_TOTAL_MEMORY;
const DEBUG_ENABLED = $GODOT_DEBUG_ENABLED;
const INDETERMINATE_STATUS_STEP_MS = 100;
@@ -246,8 +245,7 @@ $GODOT_HEAD_INCLUDE
var indeterminiateStatusAnimationId = 0;
setStatusMode('indeterminate');
- game.setCanvas(canvas);
- game.setAsmjsMemorySize(MEMORY_SIZE);
+ engine.setCanvas(canvas);
function setStatusMode(mode) {
@@ -302,7 +300,7 @@ $GODOT_HEAD_INCLUDE
});
};
- game.setProgressFunc((current, total) => {
+ engine.setProgressFunc((current, total) => {
if (total > 0) {
statusProgressInner.style.width = current/total * 100 + '%';
@@ -332,10 +330,6 @@ $GODOT_HEAD_INCLUDE
outputRoot.style.display = 'block';
function print(text) {
- if (arguments.length > 1) {
- text = Array.prototype.slice.call(arguments).join(" ");
- }
- if (text.length <= 0) return;
while (outputScroll.childElementCount >= OUTPUT_MSG_COUNT_MAX) {
outputScroll.firstChild.remove();
}
@@ -356,26 +350,31 @@ $GODOT_HEAD_INCLUDE
};
function printError(text) {
- print('**ERROR**' + ":", text);
+ if (!text.startsWith('**ERROR**: ')) {
+ text = '**ERROR**: ' + text;
+ }
+ print(text);
}
- game.setStdoutFunc(text => {
+ engine.setStdoutFunc(text => {
print(text);
console.log(text);
});
- game.setStderrFunc(text => {
+ engine.setStderrFunc(text => {
printError(text);
console.warn(text);
});
}
- game.start(BASENAME + '.pck').then(() => {
+ engine.startGame(BASENAME + '.pck').then(() => {
setStatusMode('hidden');
initializing = false;
}, err => {
- if (DEBUG_ENABLED)
+ if (DEBUG_ENABLED) {
printError(err.message);
+ console.warn(err);
+ }
setStatusNotice(err.message);
setStatusMode('notice');
initializing = false;
diff --git a/misc/dist/ios_xcode/godot.iphone.debug.fat b/misc/dist/ios_xcode/godot.iphone.debug.fat
deleted file mode 100755
index e69de29bb2..0000000000
--- a/misc/dist/ios_xcode/godot.iphone.debug.fat
+++ /dev/null
diff --git a/misc/dist/ios_xcode/godot.iphone.release.arm b/misc/dist/ios_xcode/godot.iphone.release.arm
deleted file mode 100755
index e69de29bb2..0000000000
--- a/misc/dist/ios_xcode/godot.iphone.release.arm
+++ /dev/null
diff --git a/misc/dist/ios_xcode/godot.iphone.release.arm64 b/misc/dist/ios_xcode/godot.iphone.release.arm64
deleted file mode 100755
index e69de29bb2..0000000000
--- a/misc/dist/ios_xcode/godot.iphone.release.arm64
+++ /dev/null
diff --git a/misc/dist/ios_xcode/godot.iphone.release.fat b/misc/dist/ios_xcode/godot.iphone.release.fat
deleted file mode 100755
index e69de29bb2..0000000000
--- a/misc/dist/ios_xcode/godot.iphone.release.fat
+++ /dev/null
diff --git a/misc/dist/ios_xcode/godot_ios.xcodeproj/project.pbxproj b/misc/dist/ios_xcode/godot_ios.xcodeproj/project.pbxproj
index 3f2db94193..ab15e35f63 100644
--- a/misc/dist/ios_xcode/godot_ios.xcodeproj/project.pbxproj
+++ b/misc/dist/ios_xcode/godot_ios.xcodeproj/project.pbxproj
@@ -8,8 +8,20 @@
/* Begin PBXBuildFile section */
1F1575721F582BE20003B888 /* dylibs in Resources */ = {isa = PBXBuildFile; fileRef = 1F1575711F582BE20003B888 /* dylibs */; };
+ 1FE926991FBBF85400F53A6F /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE926961FBBF7D400F53A6F /* SystemConfiguration.framework */; };
+ 1FE9269A1FBBF85F00F53A6F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE926951FBBF7C400F53A6F /* Security.framework */; };
+ 1FE9269B1FBBF86200F53A6F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE926941FBBF7BD00F53A6F /* QuartzCore.framework */; };
+ 1FE9269C1FBBF86500F53A6F /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE926931FBBF7AD00F53A6F /* MediaPlayer.framework */; };
+ 1FE9269D1FBBF86600F53A6F /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE926921FBBF7A000F53A6F /* GameController.framework */; };
+ 1FE9269E1FBBF86900F53A6F /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE926911FBBF79500F53A6F /* CoreMotion.framework */; };
+ 1FE9269F1FBBF86B00F53A6F /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE926901FBBF78E00F53A6F /* CoreMedia.framework */; };
+ 1FE926A01FBBF86D00F53A6F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE9268E1FBBF77300F53A6F /* AudioToolbox.framework */; };
+ 1FE926A11FBBF86D00F53A6F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE9268F1FBBF77F00F53A6F /* CoreAudio.framework */; };
+ DEADBEEF2F582BE20003B888 /* $binary.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DEADBEEF1F582BE20003B888 /* $binary.a */; };
+ 1FF8DBB11FBA9DE1009DE660 /* dummy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1FF8DBB01FBA9DE1009DE660 /* dummy.cpp */; };
1FF4C1851F584E3F00A41E41 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FF4C1841F584E3F00A41E41 /* GameKit.framework */; };
1FF4C1871F584E5600A41E41 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FF4C1861F584E5600A41E41 /* StoreKit.framework */; };
+ 1FF4C1871F584E7600A41E41 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FF4C1881F584E7600A41E41 /* StoreKit.framework */; };
D07CD43F1C5D573600B7FB28 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD4331C5D573600B7FB28 /* Default-568h@2x.png */; };
D07CD4411C5D573600B7FB28 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD4351C5D573600B7FB28 /* Default-667h@2x.png */; };
D07CD4421C5D573600B7FB28 /* Default-Portrait-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD4361C5D573600B7FB28 /* Default-Portrait-736h@3x.png */; };
@@ -26,14 +38,25 @@
D0BCFE4018AEBDA2004A7AAE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */; };
D0BCFE4618AEBDA2004A7AAE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */; };
D0BCFE7818AEBFEB004A7AAE /* $binary.pck in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE7718AEBFEB004A7AAE /* $binary.pck */; };
- D0BCFE7A18AEC06A004A7AAE /* $binary.iphone in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE7918AEC06A004A7AAE /* $binary.iphone */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
- 1F1575711F582BE20003B888 /* dylibs */ = {isa = PBXFileReference; lastKnownFileType = folder; name = dylibs; path = dylibs; sourceTree = "<group>"; };
+ 1F1575711F582BE20003B888 /* dylibs */ = {isa = PBXFileReference; lastKnownFileType = folder; name = dylibs; path = "$binary/dylibs"; sourceTree = "<group>"; };
+ 1FE9268E1FBBF77300F53A6F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+ 1FE9268F1FBBF77F00F53A6F /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+ 1FE926901FBBF78E00F53A6F /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
+ 1FE926911FBBF79500F53A6F /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
+ 1FE926921FBBF7A000F53A6F /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = System/Library/Frameworks/GameController.framework; sourceTree = SDKROOT; };
+ 1FE926931FBBF7AD00F53A6F /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; };
+ 1FE926941FBBF7BD00F53A6F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+ 1FE926951FBBF7C400F53A6F /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
+ 1FE926961FBBF7D400F53A6F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+ DEADBEEF1F582BE20003B888 /* $binary.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = godot; path = "$binary.a"; sourceTree = "<group>"; };
1FF4C1841F584E3F00A41E41 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
1FF4C1861F584E5600A41E41 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
+ 1FF4C1881F584E7600A41E41 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
1FF4C1881F584E6300A41E41 /* $binary.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = $binary.entitlements; sourceTree = "<group>"; };
+ 1FF8DBB01FBA9DE1009DE660 /* dummy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dummy.cpp; sourceTree = "<group>"; };
D07CD4331C5D573600B7FB28 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
D07CD4351C5D573600B7FB28 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = "<group>"; };
D07CD4361C5D573600B7FB28 /* Default-Portrait-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Portrait-736h@3x.png"; sourceTree = "<group>"; };
@@ -51,24 +74,35 @@
D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
D0BCFE4318AEBDA2004A7AAE /* $binary-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "$binary-Info.plist"; sourceTree = "<group>"; };
D0BCFE4518AEBDA2004A7AAE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
- D0BCFE4918AEBDA2004A7AAE /* $binary-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "$binary-Prefix.pch"; sourceTree = "<group>"; };
- D0BCFE6118AEBDA3004A7AAE /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
D0BCFE7718AEBFEB004A7AAE /* $binary.pck */ = {isa = PBXFileReference; lastKnownFileType = file; path = $binary.pck; sourceTree = "<group>"; };
- D0BCFE7918AEC06A004A7AAE /* $binary.iphone */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = $binary.iphone; sourceTree = "<group>"; };
/* End PBXFileReference section */
+ $additional_pbx_files
+
/* Begin PBXFrameworksBuildPhase section */
D0BCFE3118AEBDA2004A7AAE /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D0BCFE3A18AEBDA2004A7AAE /* CoreGraphics.framework in Frameworks */,
+ 1FE926991FBBF85400F53A6F /* SystemConfiguration.framework in Frameworks */,
+ 1FE9269A1FBBF85F00F53A6F /* Security.framework in Frameworks */,
+ 1FE9269B1FBBF86200F53A6F /* QuartzCore.framework in Frameworks */,
+ 1FE9269C1FBBF86500F53A6F /* MediaPlayer.framework in Frameworks */,
+ 1FE9269D1FBBF86600F53A6F /* GameController.framework in Frameworks */,
+ 1FE9269E1FBBF86900F53A6F /* CoreMotion.framework in Frameworks */,
+ 1FE9269F1FBBF86B00F53A6F /* CoreMedia.framework in Frameworks */,
+ 1FE926A11FBBF86D00F53A6F /* CoreAudio.framework in Frameworks */,
+ 1FE926A01FBBF86D00F53A6F /* AudioToolbox.framework in Frameworks */,
D0BCFE4018AEBDA2004A7AAE /* OpenGLES.framework in Frameworks */,
1FF4C1871F584E5600A41E41 /* StoreKit.framework in Frameworks */,
- D0BCFE3A18AEBDA2004A7AAE /* CoreGraphics.framework in Frameworks */,
+ 1FF4C1871F584E7600A41E41 /* AVFoundation.framework in Frameworks */,
D0BCFE3C18AEBDA2004A7AAE /* UIKit.framework in Frameworks */,
1FF4C1851F584E3F00A41E41 /* GameKit.framework in Frameworks */,
D0BCFE3E18AEBDA2004A7AAE /* GLKit.framework in Frameworks */,
D0BCFE3818AEBDA2004A7AAE /* Foundation.framework in Frameworks */,
+ DEADBEEF2F582BE20003B888 /* $binary.a */,
+ $additional_pbx_frameworks_build
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -79,11 +113,11 @@
isa = PBXGroup;
children = (
1F1575711F582BE20003B888 /* dylibs */,
- D0BCFE7918AEC06A004A7AAE /* $binary.iphone */,
D0BCFE7718AEBFEB004A7AAE /* $binary.pck */,
D0BCFE4118AEBDA2004A7AAE /* $binary */,
D0BCFE3618AEBDA2004A7AAE /* Frameworks */,
D0BCFE3518AEBDA2004A7AAE /* Products */,
+ $additional_pbx_resources_refs
);
sourceTree = "<group>";
};
@@ -98,14 +132,25 @@
D0BCFE3618AEBDA2004A7AAE /* Frameworks */ = {
isa = PBXGroup;
children = (
+ 1FE926961FBBF7D400F53A6F /* SystemConfiguration.framework */,
+ 1FE926951FBBF7C400F53A6F /* Security.framework */,
+ 1FE926941FBBF7BD00F53A6F /* QuartzCore.framework */,
+ 1FE926931FBBF7AD00F53A6F /* MediaPlayer.framework */,
+ 1FE926921FBBF7A000F53A6F /* GameController.framework */,
+ 1FE926911FBBF79500F53A6F /* CoreMotion.framework */,
+ 1FE926901FBBF78E00F53A6F /* CoreMedia.framework */,
+ 1FE9268F1FBBF77F00F53A6F /* CoreAudio.framework */,
+ 1FE9268E1FBBF77300F53A6F /* AudioToolbox.framework */,
1FF4C1861F584E5600A41E41 /* StoreKit.framework */,
1FF4C1841F584E3F00A41E41 /* GameKit.framework */,
+ 1FF4C1881F584E7600A41E41 /* AVFoundation.framework */,
D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */,
D0BCFE3918AEBDA2004A7AAE /* CoreGraphics.framework */,
D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */,
D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */,
D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */,
- D0BCFE6118AEBDA3004A7AAE /* XCTest.framework */,
+ DEADBEEF1F582BE20003B888 /* $binary.a */,
+ $additional_pbx_frameworks_refs
);
name = Frameworks;
sourceTree = "<group>";
@@ -124,6 +169,7 @@
D07CD43C1C5D573600B7FB28 /* Default-Portrait-1366h@2x.png */,
D07CD44D1C5D589C00B7FB28 /* Images.xcassets */,
D0BCFE4218AEBDA2004A7AAE /* Supporting Files */,
+ 1FF8DBB01FBA9DE1009DE660 /* dummy.cpp */,
);
path = $binary;
sourceTree = "<group>";
@@ -133,7 +179,6 @@
children = (
D0BCFE4318AEBDA2004A7AAE /* $binary-Info.plist */,
D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */,
- D0BCFE4918AEBDA2004A7AAE /* $binary-Prefix.pch */,
);
name = "Supporting Files";
sourceTree = "<group>";
@@ -218,7 +263,7 @@
D07CD4421C5D573600B7FB28 /* Default-Portrait-736h@3x.png in Resources */,
D07CD4481C5D573600B7FB28 /* Default-Portrait-1366h@2x.png in Resources */,
D0BCFE4618AEBDA2004A7AAE /* InfoPlist.strings in Resources */,
- D0BCFE7A18AEC06A004A7AAE /* $binary.iphone in Resources */,
+ $additional_pbx_resources_build
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -229,6 +274,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 1FF8DBB11FBA9DE1009DE660 /* dummy.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -250,7 +296,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
+ ARCHS = "$godot_archs";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
@@ -265,6 +311,8 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "$code_sign_identity_debug";
COPY_PHASE_STRIP = NO;
+ ENABLE_BITCODE = NO;
+ "FRAMEWORK_SEARCH_PATHS[arch=*]" = "$binary";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
@@ -280,7 +328,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
- ONLY_ACTIVE_ARCH = YES;
+ OTHER_LDFLAGS = "$linker_flags";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
@@ -290,7 +338,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
+ ARCHS = "$godot_archs";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
@@ -306,6 +354,8 @@
CODE_SIGN_IDENTITY = "$code_sign_identity_release";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "$code_sign_identity_release";
COPY_PHASE_STRIP = YES;
+ ENABLE_BITCODE = NO;
+ "FRAMEWORK_SEARCH_PATHS[arch=*]" = "$binary";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -315,6 +365,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ OTHER_LDFLAGS = "$linker_flags";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
@@ -324,26 +375,23 @@
D0BCFE7218AEBDA3004A7AAE /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD)";
+ ARCHS = "$godot_archs";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = $binary/$binary.entitlements;
CODE_SIGN_IDENTITY = "$code_sign_identity_debug";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "$code_sign_identity_debug";
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
DEVELOPMENT_TEAM = $team_id;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = "$binary/$binary-Prefix.pch";
INFOPLIST_FILE = "$binary/$binary-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
- "$(PROJECT_DIR)/dylibs",
);
PRODUCT_BUNDLE_IDENTIFIER = $identifier;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "$provisioning_profile_uuid_debug";
TARGETED_DEVICE_FAMILY = "1,2";
- VALID_ARCHS = "armv7 armv7s";
+ VALID_ARCHS = "armv7 armv7s arm64 i386 x86_64";
WRAPPER_EXTENSION = app;
};
name = Debug;
@@ -351,26 +399,23 @@
D0BCFE7318AEBDA3004A7AAE /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD)";
+ ARCHS = "$godot_archs";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = $binary/$binary.entitlements;
CODE_SIGN_IDENTITY = "$code_sign_identity_release";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "$code_sign_identity_release";
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
DEVELOPMENT_TEAM = $team_id;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = "$binary/$binary-Prefix.pch";
INFOPLIST_FILE = "$binary/$binary-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
- "$(PROJECT_DIR)/dylibs",
);
PRODUCT_BUNDLE_IDENTIFIER = $identifier;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "$provisioning_profile_uuid_release";
TARGETED_DEVICE_FAMILY = "1,2";
- VALID_ARCHS = "armv7 armv7s";
+ VALID_ARCHS = "armv7 armv7s arm64 i386 x86_64";
WRAPPER_EXTENSION = app;
};
name = Release;
diff --git a/misc/dist/ios_xcode/godot_ios/dummy.cpp b/misc/dist/ios_xcode/godot_ios/dummy.cpp
new file mode 100644
index 0000000000..78ec87fc10
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_ios/dummy.cpp
@@ -0,0 +1 @@
+$cpp_code \ No newline at end of file
diff --git a/misc/dist/ios_xcode/godot_ios/dylibs/empty b/misc/dist/ios_xcode/godot_ios/dylibs/empty
new file mode 100644
index 0000000000..4b5614362b
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_ios/dylibs/empty
@@ -0,0 +1 @@
+Dummy file to make dylibs folder exported \ No newline at end of file
diff --git a/misc/dist/ios_xcode/export_options.plist b/misc/dist/ios_xcode/godot_ios/export_options.plist
index 86d89a6e42..3878a4dbe6 100644
--- a/misc/dist/ios_xcode/export_options.plist
+++ b/misc/dist/ios_xcode/godot_ios/export_options.plist
@@ -4,7 +4,17 @@
<dict>
<key>method</key>
<string>$export_method</string>
+
<key>teamID</key>
<string>$team_id</string>
+
+ <key>provisioningProfiles</key>
+ <dict>
+ <key>$identifier</key>
+ <string>$provisioning_profile_uuid</string>
+ </dict>
+
+ <key>compileBitcode</key>
+ <false/>
</dict>
</plist> \ No newline at end of file
diff --git a/misc/dist/ios_xcode/godot_ios/godot_ios-Info.plist b/misc/dist/ios_xcode/godot_ios/godot_ios-Info.plist
index 1531a41bd0..70932c1943 100644
--- a/misc/dist/ios_xcode/godot_ios/godot_ios-Info.plist
+++ b/misc/dist/ios_xcode/godot_ios/godot_ios-Info.plist
@@ -7,7 +7,7 @@
<key>CFBundleDisplayName</key>
<string>$name</string>
<key>CFBundleExecutable</key>
- <string>$binary.iphone</string>
+ <string>$binary</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIcons~ipad</key>
@@ -47,5 +47,6 @@
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
+ $additional_plist_content
</dict>
</plist>
diff --git a/misc/dist/ios_xcode/godot_ios/main.m b/misc/dist/ios_xcode/godot_ios/main.m
deleted file mode 100644
index bb63364d8f..0000000000
--- a/misc/dist/ios_xcode/godot_ios/main.m
+++ /dev/null
@@ -1,39 +0,0 @@
-/*************************************************************************/
-/* main.m */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#import <UIKit/UIKit.h>
-
-#import "AppDelegate.h"
-
-int main(int argc, char *argv[]) {
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
- }
-}
diff --git a/misc/dist/ios_xcode/godot.iphone.debug.arm b/misc/dist/ios_xcode/libgodot.iphone.debug.fat.a
index e69de29bb2..e69de29bb2 100755..100644
--- a/misc/dist/ios_xcode/godot.iphone.debug.arm
+++ b/misc/dist/ios_xcode/libgodot.iphone.debug.fat.a
diff --git a/misc/dist/ios_xcode/godot.iphone.debug.arm64 b/misc/dist/ios_xcode/libgodot.iphone.release.fat.a
index e69de29bb2..e69de29bb2 100755..100644
--- a/misc/dist/ios_xcode/godot.iphone.debug.arm64
+++ b/misc/dist/ios_xcode/libgodot.iphone.release.fat.a
diff --git a/misc/travis/android-tools-linux.sh b/misc/travis/android-tools-linux.sh
new file mode 100755
index 0000000000..04fb2eee21
--- /dev/null
+++ b/misc/travis/android-tools-linux.sh
@@ -0,0 +1,107 @@
+#!/bin/bash
+
+# SDK
+# https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
+# SHA-256 444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0
+# latest version available here: https://developer.android.com/studio/index.html
+
+# NDK
+# https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip
+# SHA-1 0bf02d4e8b85fd770fd7b9b2cdec57f9441f27a2
+# latest version available here: https://developer.android.com/ndk/downloads/index.html
+
+BASH_RC=~/.bashrc
+GODOT_BUILD_TOOLS_PATH=./godot-dev/build-tools
+mkdir -p $GODOT_BUILD_TOOLS_PATH
+cd $GODOT_BUILD_TOOLS_PATH
+
+ANDROID_BASE_URL=http://dl.google.com/android/repository
+
+ANDROID_SDK_RELEASE=3859397
+ANDROID_SDK_DIR=android-sdk
+ANDROID_SDK_FILENAME=sdk-tools-linux-$ANDROID_SDK_RELEASE.zip
+ANDROID_SDK_URL=$ANDROID_BASE_URL/$ANDROID_SDK_FILENAME
+ANDROID_SDK_PATH=$GODOT_BUILD_TOOLS_PATH/$ANDROID_SDK_DIR
+ANDROID_SDK_SHA256=444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0
+
+ANDROID_NDK_RELEASE=r15c
+ANDROID_NDK_DIR=android-ndk
+ANDROID_NDK_FILENAME=android-ndk-$ANDROID_NDK_RELEASE-linux-x86_64.zip
+ANDROID_NDK_URL=$ANDROID_BASE_URL/$ANDROID_NDK_FILENAME
+ANDROID_NDK_PATH=$GODOT_BUILD_TOOLS_PATH/$ANDROID_NDK_DIR
+ANDROID_NDK_SHA1=0bf02d4e8b85fd770fd7b9b2cdec57f9441f27a2
+
+echo
+echo "Download and install Android development tools ..."
+echo
+
+if [ ! -e $ANDROID_SDK_FILENAME ]; then
+ echo "Downloading: Android SDK ..."
+ curl -L -O $ANDROID_SDK_URL
+else
+ echo $ANDROID_SDK_SHA1 $ANDROID_SDK_FILENAME > $ANDROID_SDK_FILENAME.sha1
+ if [ $(shasum -a 256 < $ANDROID_SDK_FILENAME | awk '{print $1;}') != $ANDROID_SDK_SHA1 ]; then
+ echo "Downloading: Android SDK ..."
+ curl -L -O $ANDROID_SDK_URL
+ fi
+fi
+
+if [ ! -d $ANDROID_SDK_DIR ]; then
+ echo "Extracting: Android SDK ..."
+ unzip -qq $ANDROID_SDK_FILENAME -d $ANDROID_SDK_DIR
+ echo
+fi
+
+if [ ! -e $ANDROID_NDK_FILENAME ]; then
+ echo "Downloading: Android NDK ..."
+ curl -L -O $ANDROID_NDK_URL
+else
+ echo $ANDROID_NDK_MD5 $ANDROID_NDK_FILENAME > $ANDROID_NDK_FILENAME.md5
+ if [ $(shasum -a 1 < $ANDROID_NDK_FILENAME | awk '{print $1;}') != $ANDROID_NDK_SHA1 ]; then
+ echo "Downloading: Android NDK ..."
+ curl -L -O $ANDROID_NDK_URL
+ fi
+fi
+
+if [ ! -d $ANDROID_NDK_DIR ]; then
+ echo "Extracting: Android NDK ..."
+ unzip -qq $ANDROID_NDK_FILENAME
+ mv android-ndk-$ANDROID_NDK_RELEASE $ANDROID_NDK_DIR
+ echo
+fi
+
+echo "Installing: Android Tools ..."
+#$ANDROID_SDK_DIR/tools/bin/sdkmanager --all
+yes | $ANDROID_SDK_DIR/tools/bin/sdkmanager --licenses > /dev/null
+$ANDROID_SDK_DIR/tools/bin/sdkmanager 'tools' > /dev/null
+$ANDROID_SDK_DIR/tools/bin/sdkmanager 'platform-tools' > /dev/null
+$ANDROID_SDK_DIR/tools/bin/sdkmanager 'build-tools;26.0.2' > /dev/null
+echo
+
+EXPORT_VAL="export ANDROID_HOME=$ANDROID_SDK_PATH"
+if ! grep -q "^$EXPORT_VAL" $BASH_RC; then
+ echo $EXPORT_VAL >> $BASH_RC
+fi
+#eval $EXPORT_VAL
+
+EXPORT_VAL="export ANDROID_NDK_ROOT=$ANDROID_NDK_PATH"
+if ! grep -q "^$EXPORT_VAL" $BASH_RC; then
+ echo $EXPORT_VAL >> $BASH_RC
+fi
+#eval $EXPORT_VAL
+
+EXPORT_VAL="export PATH=$PATH:$ANDROID_SDK_PATH/tools"
+if ! grep -q "^export PATH=.*$ANDROID_SDK_PATH/tools.*" $BASH_RC; then
+ echo $EXPORT_VAL >> $BASH_RC
+fi
+#eval $EXPORT_VAL
+
+EXPORT_VAL="export PATH=$PATH:$ANDROID_SDK_PATH/tools/bin"
+if ! grep -q "^export PATH=.*$ANDROID_SDK_PATH/tools/bin.*" $BASH_RC; then
+ echo $EXPORT_VAL >> $BASH_RC
+fi
+#eval $EXPORT_VAL
+
+echo
+echo "Done!"
+echo
diff --git a/misc/travis/android-tools-osx.sh b/misc/travis/android-tools-osx.sh
new file mode 100755
index 0000000000..96125a3a3f
--- /dev/null
+++ b/misc/travis/android-tools-osx.sh
@@ -0,0 +1,107 @@
+#!/bin/bash
+
+# SDK
+# https://dl.google.com/android/repository/sdk-tools-darwin-3859397.zip
+# SHA-256 4a81754a760fce88cba74d69c364b05b31c53d57b26f9f82355c61d5fe4b9df9
+# latest version available here: https://developer.android.com/studio/index.html
+
+# NDK
+# https://dl.google.com/android/repository/android-ndk-r15c-darwin-x86_64.zip
+# SHA-1 ea4b5d76475db84745aa8828000d009625fc1f98
+# latest version available here: https://developer.android.com/ndk/downloads/index.html
+
+BASH_RC=~/.bashrc
+GODOT_BUILD_TOOLS_PATH=./godot-dev/build-tools
+mkdir -p $GODOT_BUILD_TOOLS_PATH
+cd $GODOT_BUILD_TOOLS_PATH
+
+ANDROID_BASE_URL=http://dl.google.com/android/repository
+
+ANDROID_SDK_RELEASE=3859397
+ANDROID_SDK_DIR=android-sdk
+ANDROID_SDK_FILENAME=sdk-tools-darwin-$ANDROID_SDK_RELEASE.zip
+ANDROID_SDK_URL=$ANDROID_BASE_URL/$ANDROID_SDK_FILENAME
+ANDROID_SDK_PATH=$GODOT_BUILD_TOOLS_PATH/$ANDROID_SDK_DIR
+ANDROID_SDK_SHA256=4a81754a760fce88cba74d69c364b05b31c53d57b26f9f82355c61d5fe4b9df9
+
+ANDROID_NDK_RELEASE=r15c
+ANDROID_NDK_DIR=android-ndk
+ANDROID_NDK_FILENAME=android-ndk-$ANDROID_NDK_RELEASE-darwin-x86_64.zip
+ANDROID_NDK_URL=$ANDROID_BASE_URL/$ANDROID_NDK_FILENAME
+ANDROID_NDK_PATH=$GODOT_BUILD_TOOLS_PATH/$ANDROID_NDK_DIR
+ANDROID_NDK_SHA1=ea4b5d76475db84745aa8828000d009625fc1f98
+
+echo
+echo "Download and install Android development tools ..."
+echo
+
+if [ ! -e $ANDROID_SDK_FILENAME ]; then
+ echo "Downloading: Android SDK ..."
+ curl -L -O $ANDROID_SDK_URL
+else
+ echo $ANDROID_SDK_SHA1 $ANDROID_SDK_FILENAME > $ANDROID_SDK_FILENAME.sha1
+ if [ $(shasum -a 256 < $ANDROID_SDK_FILENAME | awk '{print $1;}') != $ANDROID_SDK_SHA1 ]; then
+ echo "Downloading: Android SDK ..."
+ curl -L -O $ANDROID_SDK_URL
+ fi
+fi
+
+if [ ! -d $ANDROID_SDK_DIR ]; then
+ echo "Extracting: Android SDK ..."
+ mkdir -p $ANDROID_SDK_DIR && tar -xf $ANDROID_SDK_FILENAME -C $ANDROID_SDK_DIR
+ echo
+fi
+
+if [ ! -e $ANDROID_NDK_FILENAME ]; then
+ echo "Downloading: Android NDK ..."
+ curl -L -O $ANDROID_NDK_URL
+else
+ echo $ANDROID_NDK_MD5 $ANDROID_NDK_FILENAME > $ANDROID_NDK_FILENAME.md5
+ if [ $(shasum -a 1 < $ANDROID_NDK_FILENAME | awk '{print $1;}') != $ANDROID_NDK_SHA1 ]; then
+ echo "Downloading: Android NDK ..."
+ curl -L -O $ANDROID_NDK_URL
+ fi
+fi
+
+if [ ! -d $ANDROID_NDK_DIR ]; then
+ echo "Extracting: Android NDK ..."
+ tar -xf $ANDROID_NDK_FILENAME
+ mv android-ndk-$ANDROID_NDK_RELEASE $ANDROID_NDK_DIR
+ echo
+fi
+
+echo "Installing: Android Tools ..."
+#$ANDROID_SDK_DIR/tools/bin/sdkmanager --all
+yes | $ANDROID_SDK_DIR/tools/bin/sdkmanager --licenses > /dev/null
+$ANDROID_SDK_DIR/tools/bin/sdkmanager 'tools' > /dev/null
+$ANDROID_SDK_DIR/tools/bin/sdkmanager 'platform-tools' > /dev/null
+$ANDROID_SDK_DIR/tools/bin/sdkmanager 'build-tools;26.0.2' > /dev/null
+echo
+
+EXPORT_VAL="export ANDROID_HOME=$ANDROID_SDK_PATH"
+if ! grep -q "^$EXPORT_VAL" $BASH_RC; then
+ echo $EXPORT_VAL >> $BASH_RC
+fi
+#eval $EXPORT_VAL
+
+EXPORT_VAL="export ANDROID_NDK_ROOT=$ANDROID_NDK_PATH"
+if ! grep -q "^$EXPORT_VAL" $BASH_RC; then
+ echo $EXPORT_VAL >> $BASH_RC
+fi
+#eval $EXPORT_VAL
+
+EXPORT_VAL="export PATH=$PATH:$ANDROID_SDK_PATH/tools"
+if ! grep -q "^export PATH=.*$ANDROID_SDK_PATH/tools.*" $BASH_RC; then
+ echo $EXPORT_VAL >> $BASH_RC
+fi
+#eval $EXPORT_VAL
+
+EXPORT_VAL="export PATH=$PATH:$ANDROID_SDK_PATH/tools/bin"
+if ! grep -q "^export PATH=.*$ANDROID_SDK_PATH/tools/bin.*" $BASH_RC; then
+ echo $EXPORT_VAL >> $BASH_RC
+fi
+#eval $EXPORT_VAL
+
+echo
+echo "Done!"
+echo
diff --git a/misc/travis/ccache-osx.sh b/misc/travis/ccache-osx.sh
new file mode 100755
index 0000000000..5ce7a80cbc
--- /dev/null
+++ b/misc/travis/ccache-osx.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+echo
+echo "Download and install ccache ..."
+echo
+
+echo "Downloading sources ..."
+curl -L -O https://www.samba.org/ftp/ccache/ccache-3.3.4.tar.gz # latest version available here: https://ccache.samba.org/download.html
+
+echo "Extracting to build directory ..."
+tar xzf ccache-3.3.4.tar.gz
+cd ccache-3.3.4
+
+echo "Compiling sources ..."
+./configure --prefix=/usr/local --with-bundled-zlib > /dev/null
+make
+
+echo "Installing ..."
+
+mkdir /usr/local/opt/ccache
+
+mkdir /usr/local/opt/ccache/bin
+cp ccache /usr/local/opt/ccache/bin
+ln -s /usr/local/opt/ccache/bin/ccache /usr/local/bin/ccache
+
+mkdir /usr/local/opt/ccache/libexec
+links=(
+ clang
+ clang++
+ cc
+ gcc gcc2 gcc3 gcc-3.3 gcc-4.0 gcc-4.2 gcc-4.3 gcc-4.4 gcc-4.5 gcc-4.6 gcc-4.7 gcc-4.8 gcc-4.9 gcc-5 gcc-6 gcc-7
+ c++ c++3 c++-3.3 c++-4.0 c++-4.2 c++-4.3 c++-4.4 c++-4.5 c++-4.6 c++-4.7 c++-4.8 c++-4.9 c++-5 c++-6 c++-7
+ g++ g++2 g++3 g++-3.3 g++-4.0 g++-4.2 g++-4.3 g++-4.4 g++-4.5 g++-4.6 g++-4.7 g++-4.8 g++-4.9 g++-5 g++-6 g++-7
+)
+for link in "${links[@]}"; do
+ ln -s ../bin/ccache /usr/local/opt/ccache/libexec/$link
+done
+#/usr/local/bin/ccache -M 2G
+cd $TRAVIS_BUILD_DIR
+
+echo
+echo "Done!"
+echo
diff --git a/misc/travis/scons-local-osx.sh b/misc/travis/scons-local-osx.sh
new file mode 100755
index 0000000000..d9d7d98b38
--- /dev/null
+++ b/misc/travis/scons-local-osx.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+echo
+echo "Download and install Scons local package ..."
+echo
+
+echo "Downloading sources ..."
+curl -L -O http://prdownloads.sourceforge.net/scons/scons-local-3.0.0.zip # latest version available here: http://scons.org/pages/download.html
+
+echo "Extracting to build directory ..."
+unzip -qq -n scons-local-3.0.0.zip -d $TRAVIS_BUILD_DIR/scons-local
+
+echo "Installing symlinks ..."
+ln -s $TRAVIS_BUILD_DIR/scons-local/scons.py /usr/local/bin/scons
+
+echo
+echo "Done!"
+echo