summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-10-15 10:41:35 +0200
committer Miodrag Milanovic <mmicko@gmail.com>2015-10-15 10:41:35 +0200
commita74a7a37ef1f6ea1fd9c96148be8fa7ba09b1054 (patch)
tree55c6dc8746dba8df522cf2dd5e75de741ea186c8
parentb900f6673042cadafefa73275e0294b2d231a663 (diff)
updated bx (nw)
-rw-r--r--3rdparty/bx/include/bx/cpu.h193
-rw-r--r--3rdparty/bx/include/bx/debug.h5
-rw-r--r--3rdparty/bx/include/bx/macros.h29
-rw-r--r--3rdparty/bx/include/bx/mpscqueue.h37
-rw-r--r--3rdparty/bx/include/bx/mutex.h8
-rw-r--r--3rdparty/bx/include/bx/os.h6
-rw-r--r--3rdparty/bx/include/bx/platform.h13
-rw-r--r--3rdparty/bx/include/bx/thread.h4
-rw-r--r--3rdparty/bx/scripts/toolchain.lua195
-rw-r--r--3rdparty/bx/tools/bin/darwin/geniebin418144 -> 418080 bytes
-rw-r--r--3rdparty/bx/tools/bin/linux/geniebin392640 -> 392624 bytes
-rw-r--r--3rdparty/bx/tools/bin/windows/genie.exebin397824 -> 396288 bytes
12 files changed, 407 insertions, 83 deletions
diff --git a/3rdparty/bx/include/bx/cpu.h b/3rdparty/bx/include/bx/cpu.h
index a9cab513273..c3713027fbb 100644
--- a/3rdparty/bx/include/bx/cpu.h
+++ b/3rdparty/bx/include/bx/cpu.h
@@ -25,8 +25,7 @@ extern "C" void _ReadWriteBarrier();
# pragma intrinsic(_ReadBarrier)
# pragma intrinsic(_WriteBarrier)
# pragma intrinsic(_ReadWriteBarrier)
-# pragma intrinsic(_InterlockedIncrement)
-# pragma intrinsic(_InterlockedDecrement)
+# pragma intrinsic(_InterlockedExchangeAdd)
# pragma intrinsic(_InterlockedCompareExchange)
#endif // BX_COMPILER_MSVC
@@ -77,27 +76,184 @@ namespace bx
#endif // BX_COMPILER
}
- /// Returns the resulting incremented value.
- inline int32_t atomicInc(volatile void* _ptr)
+ template<typename Ty>
+ inline Ty atomicFetchAndAdd(volatile Ty* _ptr, Ty _value);
+
+ template<typename Ty>
+ inline Ty atomicAddAndFetch(volatile Ty* _ptr, Ty _value);
+
+ template<typename Ty>
+ inline Ty atomicFetchAndSub(volatile Ty* _ptr, Ty _value);
+
+ template<typename Ty>
+ inline Ty atomicSubAndFetch(volatile Ty* _ptr, Ty _value);
+
+ template<typename Ty>
+ inline Ty atomicCompareAndSwap(volatile void* _ptr, Ty _old, Ty _new);
+
+ template<>
+ inline int32_t atomicCompareAndSwap(volatile void* _ptr, int32_t _old, int32_t _new);
+
+ template<>
+ inline int64_t atomicCompareAndSwap(volatile void* _ptr, int64_t _old, int64_t _new);
+
+ template<>
+ inline int32_t atomicFetchAndAdd<int32_t>(volatile int32_t* _ptr, int32_t _add)
{
#if BX_COMPILER_MSVC
- return _InterlockedIncrement( (volatile LONG*)(_ptr) );
+ return _InterlockedExchangeAdd( (volatile long*)_ptr, _add);
#else
- return __sync_add_and_fetch( (volatile int32_t*)_ptr, 1);
-#endif // BX_COMPILER
+ return __sync_fetch_and_add(_ptr, _add);
+#endif // BX_COMPILER_
}
- /// Returns the resulting decremented value.
- inline int32_t atomicDec(volatile void* _ptr)
+ template<>
+ inline int64_t atomicFetchAndAdd<int64_t>(volatile int64_t* _ptr, int64_t _add)
{
#if BX_COMPILER_MSVC
- return _InterlockedDecrement( (volatile LONG*)(_ptr) );
+# if _WIN32_WINNT >= 0x600
+ return _InterlockedExchangeAdd64( (volatile int64_t*)_ptr, _add);
+# else
+ int64_t oldVal;
+ int64_t newVal = *(int64_t volatile*)_ptr;
+ do
+ {
+ oldVal = newVal;
+ newVal = atomicCompareAndSwap(_ptr, oldVal, newVal + _add);
+
+ } while (oldVal != newVal);
+
+ return oldVal;
+# endif
#else
- return __sync_sub_and_fetch( (volatile int32_t*)_ptr, 1);
-#endif // BX_COMPILER
+ return __sync_fetch_and_add(_ptr, _add);
+#endif // BX_COMPILER_
+ }
+
+ template<>
+ inline uint32_t atomicFetchAndAdd<uint32_t>(volatile uint32_t* _ptr, uint32_t _add)
+ {
+ return uint32_t(atomicFetchAndAdd<int32_t>( (volatile int32_t*)_ptr, int32_t(_add) ) );
+ }
+
+ template<>
+ inline uint64_t atomicFetchAndAdd<uint64_t>(volatile uint64_t* _ptr, uint64_t _add)
+ {
+ return uint64_t(atomicFetchAndAdd<int64_t>( (volatile int64_t*)_ptr, int64_t(_add) ) );
+ }
+
+ template<>
+ inline int32_t atomicAddAndFetch<int32_t>(volatile int32_t* _ptr, int32_t _add)
+ {
+#if BX_COMPILER_MSVC
+ return atomicFetchAndAdd(_ptr, _add) + _add;
+#else
+ return __sync_add_and_fetch(_ptr, _add);
+#endif // BX_COMPILER_
+ }
+
+ template<>
+ inline int64_t atomicAddAndFetch<int64_t>(volatile int64_t* _ptr, int64_t _add)
+ {
+#if BX_COMPILER_MSVC
+ return atomicFetchAndAdd(_ptr, _add) + _add;
+#else
+ return __sync_add_and_fetch(_ptr, _add);
+#endif // BX_COMPILER_
+ }
+
+ template<>
+ inline uint32_t atomicAddAndFetch<uint32_t>(volatile uint32_t* _ptr, uint32_t _add)
+ {
+ return uint32_t(atomicAddAndFetch<int32_t>( (volatile int32_t*)_ptr, int32_t(_add) ) );
+ }
+
+ template<>
+ inline uint64_t atomicAddAndFetch<uint64_t>(volatile uint64_t* _ptr, uint64_t _add)
+ {
+ return uint64_t(atomicAddAndFetch<int64_t>( (volatile int64_t*)_ptr, int64_t(_add) ) );
+ }
+
+ template<>
+ inline int32_t atomicFetchAndSub<int32_t>(volatile int32_t* _ptr, int32_t _sub)
+ {
+#if BX_COMPILER_MSVC
+ return atomicFetchAndAdd(_ptr, -_sub);
+#else
+ return __sync_fetch_and_sub(_ptr, _sub);
+#endif // BX_COMPILER_
+ }
+
+ template<>
+ inline int64_t atomicFetchAndSub<int64_t>(volatile int64_t* _ptr, int64_t _sub)
+ {
+#if BX_COMPILER_MSVC
+ return atomicFetchAndAdd(_ptr, -_sub);
+#else
+ return __sync_fetch_and_sub(_ptr, _sub);
+#endif // BX_COMPILER_
+ }
+
+ template<>
+ inline uint32_t atomicFetchAndSub<uint32_t>(volatile uint32_t* _ptr, uint32_t _add)
+ {
+ return uint32_t(atomicFetchAndSub<int32_t>( (volatile int32_t*)_ptr, int32_t(_add) ) );
+ }
+
+ template<>
+ inline uint64_t atomicFetchAndSub<uint64_t>(volatile uint64_t* _ptr, uint64_t _add)
+ {
+ return uint64_t(atomicFetchAndSub<int64_t>( (volatile int64_t*)_ptr, int64_t(_add) ) );
+ }
+
+ template<>
+ inline int32_t atomicSubAndFetch<int32_t>(volatile int32_t* _ptr, int32_t _sub)
+ {
+#if BX_COMPILER_MSVC
+ return atomicFetchAndAdd(_ptr, -_sub) - _sub;
+#else
+ return __sync_sub_and_fetch(_ptr, _sub);
+#endif // BX_COMPILER_
+ }
+
+ template<>
+ inline int64_t atomicSubAndFetch<int64_t>(volatile int64_t* _ptr, int64_t _sub)
+ {
+#if BX_COMPILER_MSVC
+ return atomicFetchAndAdd(_ptr, -_sub) - _sub;
+#else
+ return __sync_sub_and_fetch(_ptr, _sub);
+#endif // BX_COMPILER_
+ }
+
+ template<>
+ inline uint32_t atomicSubAndFetch<uint32_t>(volatile uint32_t* _ptr, uint32_t _add)
+ {
+ return uint32_t(atomicSubAndFetch<int32_t>( (volatile int32_t*)_ptr, int32_t(_add) ) );
+ }
+
+ template<>
+ inline uint64_t atomicSubAndFetch<uint64_t>(volatile uint64_t* _ptr, uint64_t _add)
+ {
+ return uint64_t(atomicSubAndFetch<int64_t>( (volatile int64_t*)_ptr, int64_t(_add) ) );
+ }
+
+ /// Returns the resulting incremented value.
+ template<typename Ty>
+ inline Ty atomicInc(volatile Ty* _ptr)
+ {
+ return atomicAddAndFetch(_ptr, Ty(1) );
+ }
+
+ /// Returns the resulting decremented value.
+ template<typename Ty>
+ inline Ty atomicDec(volatile Ty* _ptr)
+ {
+ return atomicSubAndFetch(_ptr, Ty(1) );
}
///
+ template<>
inline int32_t atomicCompareAndSwap(volatile void* _ptr, int32_t _old, int32_t _new)
{
#if BX_COMPILER_MSVC
@@ -108,10 +264,21 @@ namespace bx
}
///
+ template<>
+ inline int64_t atomicCompareAndSwap(volatile void* _ptr, int64_t _old, int64_t _new)
+ {
+#if BX_COMPILER_MSVC
+ return _InterlockedCompareExchange64( (volatile LONG64*)(_ptr), _new, _old);
+#else
+ return __sync_val_compare_and_swap( (volatile int64_t*)_ptr, _old, _new);
+#endif // BX_COMPILER
+ }
+
+ ///
inline void* atomicExchangePtr(void** _ptr, void* _new)
{
#if BX_COMPILER_MSVC
- return InterlockedExchangePointer(_ptr, _new); /* VS2012 no intrinsics */
+ return InterlockedExchangePointer(_ptr, _new);
#else
return __sync_lock_test_and_set(_ptr, _new);
#endif // BX_COMPILER
diff --git a/3rdparty/bx/include/bx/debug.h b/3rdparty/bx/include/bx/debug.h
index 7aff6b1f5f0..3e7afb29f6f 100644
--- a/3rdparty/bx/include/bx/debug.h
+++ b/3rdparty/bx/include/bx/debug.h
@@ -51,7 +51,10 @@ namespace bx
inline void debugOutput(const char* _out)
{
#if BX_PLATFORM_ANDROID
- __android_log_write(ANDROID_LOG_DEBUG, "", _out);
+# ifndef BX_ANDROID_LOG_TAG
+# define BX_ANDROID_LOG_TAG ""
+# endif // BX_ANDROID_LOG_TAG
+ __android_log_write(ANDROID_LOG_DEBUG, BX_ANDROID_LOG_TAG, _out);
#elif BX_PLATFORM_WINDOWS || BX_PLATFORM_WINRT || BX_PLATFORM_XBOX360
OutputDebugStringA(_out);
#elif BX_PLATFORM_IOS || BX_PLATFORM_OSX
diff --git a/3rdparty/bx/include/bx/macros.h b/3rdparty/bx/include/bx/macros.h
index 279343b9715..4ee97a8ad8c 100644
--- a/3rdparty/bx/include/bx/macros.h
+++ b/3rdparty/bx/include/bx/macros.h
@@ -48,6 +48,18 @@
#define BX_ALIGNOF(_type) __alignof(_type)
+#if defined(__has_feature)
+# define BX_CLANG_HAS_FEATURE(_x) __has_feature(_x)
+#else
+# define BX_CLANG_HAS_FEATURE(_x) 0
+#endif // defined(__has_feature)
+
+#if defined(__has_extension)
+# define BX_CLANG_HAS_EXTENSION(_x) __has_extension(_x)
+#else
+# define BX_CLANG_HAS_EXTENSION(_x) 0
+#endif // defined(__has_extension)
+
#if BX_COMPILER_GCC || BX_COMPILER_CLANG
# define BX_ALIGN_DECL(_align, _decl) _decl __attribute__( (aligned(_align) ) )
# define BX_ALLOW_UNUSED __attribute__( (unused) )
@@ -60,11 +72,12 @@
# define BX_NO_VTABLE
# define BX_OVERRIDE
# define BX_PRINTF_ARGS(_format, _args) __attribute__ ( (format(__printf__, _format, _args) ) )
-# if BX_COMPILER_CLANG && (BX_PLATFORM_OSX || BX_PLATFORM_IOS)
-# define BX_THREAD /* not supported right now */
-# else
-# define BX_THREAD __thread
+# if BX_CLANG_HAS_FEATURE(cxx_thread_local)
+# define BX_THREAD_LOCAL __thread
# endif // BX_COMPILER_CLANG
+# if BX_COMPILER_GCC >= 40200
+# define BX_THREAD_LOCAL __thread
+# endif // BX_COMPILER_GCC
# define BX_ATTRIBUTE(_x) __attribute__( (_x) )
# if BX_COMPILER_MSVC_COMPATIBLE
# define __stdcall
@@ -81,18 +94,12 @@
# define BX_NO_VTABLE __declspec(novtable)
# define BX_OVERRIDE override
# define BX_PRINTF_ARGS(_format, _args)
-# define BX_THREAD __declspec(thread)
+# define BX_THREAD_LOCAL __declspec(thread)
# define BX_ATTRIBUTE(_x)
#else
# error "Unknown BX_COMPILER_?"
#endif
-#if defined(__has_extension)
-# define BX_CLANG_HAS_EXTENSION(_x) __has_extension(_x)
-#else
-# define BX_CLANG_HAS_EXTENSION(_x) 0
-#endif // defined(__has_extension)
-
// #define BX_STATIC_ASSERT(_condition, ...) static_assert(_condition, "" __VA_ARGS__)
#define BX_STATIC_ASSERT(_condition, ...) typedef char BX_CONCATENATE(BX_STATIC_ASSERT_, __LINE__)[1][(_condition)] BX_ATTRIBUTE(unused)
diff --git a/3rdparty/bx/include/bx/mpscqueue.h b/3rdparty/bx/include/bx/mpscqueue.h
index f0d91e1a238..d7f3966d5ae 100644
--- a/3rdparty/bx/include/bx/mpscqueue.h
+++ b/3rdparty/bx/include/bx/mpscqueue.h
@@ -29,9 +29,8 @@ namespace bx
void push(Ty* _ptr) // producer only
{
- m_write.lock();
+ LwMutexScope $(m_write);
m_queue.push(_ptr);
- m_write.unlock();
}
Ty* peek() // consumer only
@@ -49,6 +48,40 @@ namespace bx
SpScUnboundedQueue<Ty> m_queue;
};
+ template <typename Ty>
+ class MpScUnboundedBlockingQueue
+ {
+ BX_CLASS(MpScUnboundedBlockingQueue
+ , NO_COPY
+ , NO_ASSIGNMENT
+ );
+
+ public:
+ MpScUnboundedBlockingQueue()
+ {
+ }
+
+ ~MpScUnboundedBlockingQueue()
+ {
+ }
+
+ void push(Ty* _ptr) // producer only
+ {
+ m_queue.push(_ptr);
+ m_sem.post();
+ }
+
+ Ty* pop() // consumer only
+ {
+ m_sem.wait();
+ return m_queue.pop();
+ }
+
+ private:
+ MpScUnboundedQueue<Ty> m_queue;
+ Semaphore m_sem;
+ };
+
} // namespace bx
#endif // BX_MPSCQUEUE_H_HEADER_GUARD
diff --git a/3rdparty/bx/include/bx/mutex.h b/3rdparty/bx/include/bx/mutex.h
index c0b0e8ca2de..ee6bd33871b 100644
--- a/3rdparty/bx/include/bx/mutex.h
+++ b/3rdparty/bx/include/bx/mutex.h
@@ -69,7 +69,13 @@ namespace bx
public:
Mutex()
{
- pthread_mutex_init(&m_handle, NULL);
+ pthread_mutexattr_t attr;
+#if BX_PLATFORM_WINDOWS || BX_PLATFORM_XBOX360 || BX_PLATFORM_WINRT
+#else
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+#endif // BX_PLATFORM_WINDOWS || BX_PLATFORM_XBOX360 || BX_PLATFORM_WINRT
+ pthread_mutex_init(&m_handle, &attr);
}
~Mutex()
diff --git a/3rdparty/bx/include/bx/os.h b/3rdparty/bx/include/bx/os.h
index a914122f5e6..e188d57e26e 100644
--- a/3rdparty/bx/include/bx/os.h
+++ b/3rdparty/bx/include/bx/os.h
@@ -15,21 +15,17 @@
#elif BX_PLATFORM_ANDROID \
|| BX_PLATFORM_EMSCRIPTEN \
|| BX_PLATFORM_FREEBSD \
- || BX_PLATFORM_NETBSD \
|| BX_PLATFORM_IOS \
|| BX_PLATFORM_LINUX \
|| BX_PLATFORM_NACL \
- || BX_PLATFORM_NETBSD \
|| BX_PLATFORM_OSX \
|| BX_PLATFORM_PS4 \
|| BX_PLATFORM_RPI
# include <sched.h> // sched_yield
# if BX_PLATFORM_FREEBSD \
- || BX_PLATFORM_NETBSD \
|| BX_PLATFORM_IOS \
|| BX_PLATFORM_NACL \
- || BX_PLATFORM_NETBSD \
|| BX_PLATFORM_OSX \
|| BX_PLATFORM_PS4
# include <pthread.h> // mach_port_t
@@ -107,7 +103,7 @@ namespace bx
return (pid_t)::syscall(SYS_gettid);
#elif BX_PLATFORM_IOS || BX_PLATFORM_OSX
return (mach_port_t)::pthread_mach_thread_np(pthread_self() );
-#elif BX_PLATFORM_FREEBSD || BX_PLATFORM_NACL || BX_PLATFORM_NETBSD
+#elif BX_PLATFORM_FREEBSD || BX_PLATFORM_NACL
// Casting __nc_basic_thread_data*... need better way to do this.
return *(uint32_t*)::pthread_self();
#else
diff --git a/3rdparty/bx/include/bx/platform.h b/3rdparty/bx/include/bx/platform.h
index ae21880d99b..8de637b96ef 100644
--- a/3rdparty/bx/include/bx/platform.h
+++ b/3rdparty/bx/include/bx/platform.h
@@ -15,11 +15,9 @@
#define BX_PLATFORM_ANDROID 0
#define BX_PLATFORM_EMSCRIPTEN 0
#define BX_PLATFORM_FREEBSD 0
-#define BX_PLATFORM_NETBSD 0
#define BX_PLATFORM_IOS 0
#define BX_PLATFORM_LINUX 0
#define BX_PLATFORM_NACL 0
-#define BX_PLATFORM_NETBSD 0
#define BX_PLATFORM_OSX 0
#define BX_PLATFORM_PS4 0
#define BX_PLATFORM_QNX 0
@@ -171,7 +169,7 @@
#elif defined(__linux__)
# undef BX_PLATFORM_LINUX
# define BX_PLATFORM_LINUX 1
-#elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__)
+#elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) || defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__)
# undef BX_PLATFORM_IOS
# define BX_PLATFORM_IOS 1
#elif defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
@@ -189,9 +187,6 @@
#elif defined(__FreeBSD__)
# undef BX_PLATFORM_FREEBSD
# define BX_PLATFORM_FREEBSD 1
-#elif defined(__NetBSD__)
-# undef BX_PLATFORM_NETBSD
-# define BX_PLATFORM_NETBSD 1
#else
# error "BX_PLATFORM_* is not defined!"
#endif //
@@ -200,11 +195,9 @@
|| BX_PLATFORM_ANDROID \
|| BX_PLATFORM_EMSCRIPTEN \
|| BX_PLATFORM_FREEBSD \
- || BX_PLATFORM_NETBSD \
|| BX_PLATFORM_IOS \
|| BX_PLATFORM_LINUX \
|| BX_PLATFORM_NACL \
- || BX_PLATFORM_NETBSD \
|| BX_PLATFORM_OSX \
|| BX_PLATFORM_QNX \
|| BX_PLATFORM_PS4 \
@@ -251,8 +244,6 @@
BX_STRINGIZE(__EMSCRIPTEN_tiny__)
#elif BX_PLATFORM_FREEBSD
# define BX_PLATFORM_NAME "FreeBSD"
-#elif BX_PLATFORM_NETBSD
-# define BX_PLATFORM_NAME "NetBSD"
#elif BX_PLATFORM_IOS
# define BX_PLATFORM_NAME "iOS"
#elif BX_PLATFORM_LINUX
@@ -260,8 +251,6 @@
#elif BX_PLATFORM_NACL
# define BX_PLATFORM_NAME "NaCl " \
BX_STRINGIZE(BX_PLATFORM_NACL)
-#elif BX_PLATFORM_NETBSD
-# define BX_PLATFORM_NAME "NetBSD"
#elif BX_PLATFORM_OSX
# define BX_PLATFORM_NAME "OSX"
#elif BX_PLATFORM_PS4
diff --git a/3rdparty/bx/include/bx/thread.h b/3rdparty/bx/include/bx/thread.h
index fd572cebf5e..698418170cd 100644
--- a/3rdparty/bx/include/bx/thread.h
+++ b/3rdparty/bx/include/bx/thread.h
@@ -260,7 +260,7 @@ namespace bx
uint32_t m_id;
};
-#elif !(BX_PLATFORM_WINRT)
+#elif !BX_PLATFORM_WINRT
class TlsData
{
@@ -291,7 +291,7 @@ namespace bx
private:
pthread_key_t m_id;
};
-#endif // BX_PLATFORM_WINDOWS
+#endif // BX_PLATFORM_*
} // namespace bx
diff --git a/3rdparty/bx/scripts/toolchain.lua b/3rdparty/bx/scripts/toolchain.lua
index bb306084587..3f62914a71f 100644
--- a/3rdparty/bx/scripts/toolchain.lua
+++ b/3rdparty/bx/scripts/toolchain.lua
@@ -13,25 +13,29 @@ function toolchain(_buildDir, _libDir)
value = "GCC",
description = "Choose GCC flavor",
allowed = {
- { "android-arm", "Android - ARM" },
- { "android-mips", "Android - MIPS" },
- { "android-x86", "Android - x86" },
- { "asmjs", "Emscripten/asm.js" },
- { "freebsd", "FreeBSD" },
- { "linux-gcc", "Linux (GCC compiler)" },
- { "linux-gcc-5", "Linux (GCC-5 compiler)" },
- { "linux-clang", "Linux (Clang compiler)" },
- { "ios-arm", "iOS - ARM" },
- { "ios-simulator", "iOS - Simulator" },
- { "mingw-gcc", "MinGW" },
- { "mingw-clang", "MinGW (clang compiler)" },
- { "nacl", "Native Client" },
- { "nacl-arm", "Native Client - ARM" },
- { "osx", "OSX" },
- { "pnacl", "Native Client - PNaCl" },
- { "ps4", "PS4" },
- { "qnx-arm", "QNX/Blackberry - ARM" },
- { "rpi", "RaspberryPi" },
+ { "android-arm", "Android - ARM" },
+ { "android-mips", "Android - MIPS" },
+ { "android-x86", "Android - x86" },
+ { "asmjs", "Emscripten/asm.js" },
+ { "freebsd", "FreeBSD" },
+ { "linux-gcc", "Linux (GCC compiler)" },
+ { "linux-gcc-5", "Linux (GCC-5 compiler)" },
+ { "linux-clang", "Linux (Clang compiler)" },
+ { "linux-mips-gcc", "Linux (MIPS, GCC compiler)" },
+ { "linux-arm-gcc", "Linux (ARM, GCC compiler)" },
+ { "ios-arm", "iOS - ARM" },
+ { "ios-simulator", "iOS - Simulator" },
+ { "tvos-arm64", "tvOS - ARM64" },
+ { "tvos-simulator", "tvOS - Simulator" },
+ { "mingw-gcc", "MinGW" },
+ { "mingw-clang", "MinGW (clang compiler)" },
+ { "nacl", "Native Client" },
+ { "nacl-arm", "Native Client - ARM" },
+ { "osx", "OSX" },
+ { "pnacl", "Native Client - PNaCl" },
+ { "ps4", "PS4" },
+ { "qnx-arm", "QNX/Blackberry - ARM" },
+ { "rpi", "RaspberryPi" },
},
}
@@ -60,6 +64,7 @@ function toolchain(_buildDir, _libDir)
allowed = {
{ "osx", "OSX" },
{ "ios", "iOS" },
+ { "tvos", "tvOS" },
}
}
@@ -75,6 +80,12 @@ function toolchain(_buildDir, _libDir)
description = "Set iOS target version (default: 8.0).",
}
+ newoption {
+ trigger = "with-tvos",
+ value = "#",
+ description = "Set tvOS target version (default: 9.0).",
+ }
+
-- Avoid error when invoking genie --help.
if (_ACTION == nil) then return false end
@@ -94,6 +105,11 @@ function toolchain(_buildDir, _libDir)
iosPlatform = _OPTIONS["with-ios"]
end
+ local tvosPlatform = ""
+ if _OPTIONS["with-tvos"] then
+ tvosPlatform = _OPTIONS["with-tvos"]
+ end
+
if _ACTION == "gmake" then
if nil == _OPTIONS["gcc"] then
@@ -154,17 +170,29 @@ function toolchain(_buildDir, _libDir)
location (path.join(_buildDir, "projects", _ACTION .. "-freebsd"))
elseif "ios-arm" == _OPTIONS["gcc"] then
- premake.gcc.cc = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
- premake.gcc.cxx = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
+ premake.gcc.cc = "clang"
+ premake.gcc.cxx = "clang++"
premake.gcc.ar = "ar"
location (path.join(_buildDir, "projects", _ACTION .. "-ios-arm"))
elseif "ios-simulator" == _OPTIONS["gcc"] then
- premake.gcc.cc = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
- premake.gcc.cxx = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
+ premake.gcc.cc = "clang"
+ premake.gcc.cxx = "clang++"
premake.gcc.ar = "ar"
location (path.join(_buildDir, "projects", _ACTION .. "-ios-simulator"))
+ elseif "tvos-arm64" == _OPTIONS["gcc"] then
+ premake.gcc.cc = "clang"
+ premake.gcc.cxx = "clang++"
+ premake.gcc.ar = "ar"
+ location (path.join(_buildDir, "projects", _ACTION .. "-tvos-arm64"))
+
+ elseif "tvos-simulator" == _OPTIONS["gcc"] then
+ premake.gcc.cc = "clang"
+ premake.gcc.cxx = "clang++"
+ premake.gcc.ar = "ar"
+ location (path.join(_buildDir, "projects", _ACTION .. "-tvos-simulator"))
+
elseif "linux-gcc" == _OPTIONS["gcc"] then
location (path.join(_buildDir, "projects", _ACTION .. "-linux"))
@@ -180,6 +208,12 @@ function toolchain(_buildDir, _libDir)
premake.gcc.ar = "ar"
location (path.join(_buildDir, "projects", _ACTION .. "-linux-clang"))
+ elseif "linux-mips-gcc" == _OPTIONS["gcc"] then
+ location (path.join(_buildDir, "projects", _ACTION .. "-linux-mips-gcc"))
+
+ elseif "linux-arm-gcc" == _OPTIONS["gcc"] then
+ location (path.join(_buildDir, "projects", _ACTION .. "-linux-arm-gcc"))
+
elseif "mingw-gcc" == _OPTIONS["gcc"] then
premake.gcc.cc = "$(MINGW)/bin/x86_64-w64-mingw32-gcc"
premake.gcc.cxx = "$(MINGW)/bin/x86_64-w64-mingw32-g++"
@@ -335,6 +369,10 @@ function toolchain(_buildDir, _libDir)
elseif "ios" == _OPTIONS["xcode"] then
premake.xcode.toolset = "iphoneos"
location (path.join(_buildDir, "projects", _ACTION .. "-ios"))
+
+ elseif "tvos" == _OPTIONS["xcode"] then
+ premake.xcode.toolset = "appletvos"
+ location (path.join(_buildDir, "projects", _ACTION .. "-tvos"))
end
end
@@ -397,7 +435,6 @@ function toolchain(_buildDir, _libDir)
objdir (path.join(_buildDir, "win32_" .. _ACTION, "obj"))
libdirs {
path.join(_libDir, "lib/win32_" .. _ACTION),
- "$(DXSDK_DIR)/lib/x86",
}
configuration { "x64", "vs*" }
@@ -406,7 +443,6 @@ function toolchain(_buildDir, _libDir)
objdir (path.join(_buildDir, "win64_" .. _ACTION, "obj"))
libdirs {
path.join(_libDir, "lib/win64_" .. _ACTION),
- "$(DXSDK_DIR)/lib/x64",
}
configuration { "ARM", "vs*" }
@@ -462,7 +498,6 @@ function toolchain(_buildDir, _libDir)
objdir (path.join(_buildDir, "win32_mingw-gcc/obj"))
libdirs {
path.join(_libDir, "lib/win32_mingw-gcc"),
- "$(DXSDK_DIR)/lib/x86",
}
buildoptions { "-m32" }
@@ -471,8 +506,6 @@ function toolchain(_buildDir, _libDir)
objdir (path.join(_buildDir, "win64_mingw-gcc/obj"))
libdirs {
path.join(_libDir, "lib/win64_mingw-gcc"),
- "$(DXSDK_DIR)/lib/x64",
- "$(GLES_X64_DIR)",
}
buildoptions { "-m64" }
@@ -492,7 +525,6 @@ function toolchain(_buildDir, _libDir)
objdir (path.join(_buildDir, "win32_mingw-clang/obj"))
libdirs {
path.join(_libDir, "lib/win32_mingw-clang"),
- "$(DXSDK_DIR)/lib/x86",
}
buildoptions { "-m32" }
@@ -501,8 +533,6 @@ function toolchain(_buildDir, _libDir)
objdir (path.join(_buildDir, "win64_mingw-clang/obj"))
libdirs {
path.join(_libDir, "lib/win64_mingw-clang"),
- "$(DXSDK_DIR)/lib/x64",
- "$(GLES_X64_DIR)",
}
buildoptions { "-m64" }
@@ -521,12 +551,12 @@ function toolchain(_buildDir, _libDir)
-- "ubsan",
}
- configuration { "linux-g*" }
+ configuration { "linux-gcc" }
buildoptions {
- "-mfpmath=sse", -- force SSE to get 32-bit and 64-bit builds deterministic.
+ "-mfpmath=sse",
}
- configuration { "linux-*" }
+ configuration { "linux-gcc or linux-clang" }
buildoptions {
"-msse2",
"-Wunused-value",
@@ -543,7 +573,7 @@ function toolchain(_buildDir, _libDir)
"-Wl,--gc-sections",
}
- configuration { "linux-g*", "x32" }
+ configuration { "linux-gcc*", "x32" }
targetdir (path.join(_buildDir, "linux32_gcc/bin"))
objdir (path.join(_buildDir, "linux32_gcc/obj"))
libdirs { path.join(_libDir, "lib/linux32_gcc") }
@@ -551,7 +581,7 @@ function toolchain(_buildDir, _libDir)
"-m32",
}
- configuration { "linux-g*", "x64" }
+ configuration { "linux-gcc*", "x64" }
targetdir (path.join(_buildDir, "linux64_gcc/bin"))
objdir (path.join(_buildDir, "linux64_gcc/obj"))
libdirs { path.join(_libDir, "lib/linux64_gcc") }
@@ -575,6 +605,44 @@ function toolchain(_buildDir, _libDir)
"-m64",
}
+ configuration { "linux-mips-gcc" }
+ targetdir (path.join(_buildDir, "linux32_mips_gcc/bin"))
+ objdir (path.join(_buildDir, "linux32_mips_gcc/obj"))
+ libdirs { path.join(_libDir, "lib/linux32_mips_gcc") }
+ buildoptions {
+ "-Wunused-value",
+ "-Wundef",
+ }
+ buildoptions_cpp {
+ "-std=c++0x",
+ }
+ links {
+ "rt",
+ "dl",
+ }
+ linkoptions {
+ "-Wl,--gc-sections",
+ }
+
+ configuration { "linux-arm-gcc" }
+ targetdir (path.join(_buildDir, "linux32_arm_gcc/bin"))
+ objdir (path.join(_buildDir, "linux32_arm_gcc/obj"))
+ libdirs { path.join(_libDir, "lib/linux32_arm_gcc") }
+ buildoptions {
+ "-Wunused-value",
+ "-Wundef",
+ }
+ buildoptions_cpp {
+ "-std=c++0x",
+ }
+ links {
+ "rt",
+ "dl",
+ }
+ linkoptions {
+ "-Wl,--gc-sections",
+ }
+
configuration { "android-*" }
flags {
"NoImportLib",
@@ -837,6 +905,10 @@ function toolchain(_buildDir, _libDir)
}
includedirs { path.join(bxDir, "include/compat/ios") }
+ configuration { "xcode4", "ios*" }
+ targetdir (path.join(_buildDir, "ios-arm/bin"))
+ objdir (path.join(_buildDir, "ios-arm/obj"))
+
configuration { "ios-arm" }
targetdir (path.join(_buildDir, "ios-arm/bin"))
objdir (path.join(_buildDir, "ios-arm/obj"))
@@ -873,6 +945,57 @@ function toolchain(_buildDir, _libDir)
"--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator" ..iosPlatform .. ".sdk",
}
+ configuration { "tvos*" }
+ linkoptions {
+ "-lc++",
+ }
+ buildoptions {
+ "-Wfatal-errors",
+ "-Wunused-value",
+ "-Wundef",
+ }
+ includedirs { path.join(bxDir, "include/compat/ios") }
+
+ configuration { "xcode4", "tvos*" }
+ targetdir (path.join(_buildDir, "tvos-arm64/bin"))
+ objdir (path.join(_buildDir, "tvos-arm64/obj"))
+
+ configuration { "tvos-arm64" }
+ targetdir (path.join(_buildDir, "tvos-arm64/bin"))
+ objdir (path.join(_buildDir, "tvos-arm64/obj"))
+ libdirs { path.join(_libDir, "lib/tvos-arm64") }
+ linkoptions {
+ "-mtvos-version-min=9.0",
+ "-arch arm64",
+ "--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS" ..tvosPlatform .. ".sdk",
+ "-L/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS" ..tvosPlatform .. ".sdk/usr/lib/system",
+ "-F/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS" ..tvosPlatform .. ".sdk/System/Library/Frameworks",
+ "-F/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS" ..tvosPlatform .. ".sdk/System/Library/PrivateFrameworks",
+ }
+ buildoptions {
+ "-mtvos-version-min=9.0",
+ "-arch arm64",
+ "--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS" ..tvosPlatform .. ".sdk",
+ }
+
+ configuration { "tvos-simulator" }
+ targetdir (path.join(_buildDir, "tvos-simulator/bin"))
+ objdir (path.join(_buildDir, "tvos-simulator/obj"))
+ libdirs { path.join(_libDir, "lib/tvos-simulator") }
+ linkoptions {
+ "-mtvos-simulator-version-min=9.0",
+ "-arch i386",
+ "--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator" ..tvosPlatform .. ".sdk",
+ "-L/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator" ..tvosPlatform .. ".sdk/usr/lib/system",
+ "-F/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator" ..tvosPlatform .. ".sdk/System/Library/Frameworks",
+ "-F/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator" ..tvosPlatform .. ".sdk/System/Library/PrivateFrameworks",
+ }
+ buildoptions {
+ "-mtvos-simulator-version-min=9.0",
+ "-arch i386",
+ "--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator" ..tvosPlatform .. ".sdk",
+ }
+
configuration { "ps4" }
targetdir (path.join(_buildDir, "ps4/bin"))
objdir (path.join(_buildDir, "ps4/obj"))
diff --git a/3rdparty/bx/tools/bin/darwin/genie b/3rdparty/bx/tools/bin/darwin/genie
index 80a66591852..d689fbcf76b 100644
--- a/3rdparty/bx/tools/bin/darwin/genie
+++ b/3rdparty/bx/tools/bin/darwin/genie
Binary files differ
diff --git a/3rdparty/bx/tools/bin/linux/genie b/3rdparty/bx/tools/bin/linux/genie
index ee15b19d922..2e532ef9172 100644
--- a/3rdparty/bx/tools/bin/linux/genie
+++ b/3rdparty/bx/tools/bin/linux/genie
Binary files differ
diff --git a/3rdparty/bx/tools/bin/windows/genie.exe b/3rdparty/bx/tools/bin/windows/genie.exe
index 546f28e9f4a..5ca75020b6a 100644
--- a/3rdparty/bx/tools/bin/windows/genie.exe
+++ b/3rdparty/bx/tools/bin/windows/genie.exe
Binary files differ