diff --git a/include/bx/os.h b/include/bx/os.h index 4ab5c2b..82eefdb 100644 --- a/include/bx/os.h +++ b/include/bx/os.h @@ -16,7 +16,8 @@ || BX_PLATFORM_IOS \ || BX_PLATFORM_LINUX \ || BX_PLATFORM_NACL \ - || BX_PLATFORM_OSX + || BX_PLATFORM_OSX \ + || BX_PLATFORM_RPI # include // sched_yield # if BX_PLATFORM_FREEBSD || BX_PLATFORM_IOS || BX_PLATFORM_NACL || BX_PLATFORM_OSX @@ -30,10 +31,10 @@ # include // dlopen, dlclose, dlsym # endif // BX_PLATFORM_NACL -# if BX_PLATFORM_LINUX +# if BX_PLATFORM_LINUX || BX_PLATFORM_RPI # include // syscall # include -# endif // BX_PLATFORM_LINUX +# endif // BX_PLATFORM_LINUX || BX_PLATFORM_RPI # if BX_PLATFORM_ANDROID # include "debug.h" // getTid is not implemented... @@ -79,7 +80,7 @@ namespace bx { #if BX_PLATFORM_WINDOWS return ::GetCurrentThreadId(); -#elif BX_PLATFORM_LINUX +#elif BX_PLATFORM_LINUX || BX_PLATFORM_RPI return (pid_t)::syscall(SYS_gettid); #elif BX_PLATFORM_IOS || BX_PLATFORM_OSX return (mach_port_t)::pthread_mach_thread_np(pthread_self() ); diff --git a/include/bx/platform.h b/include/bx/platform.h index 2b37f64..839e966 100644 --- a/include/bx/platform.h +++ b/include/bx/platform.h @@ -18,6 +18,7 @@ #define BX_PLATFORM_NACL 0 #define BX_PLATFORM_OSX 0 #define BX_PLATFORM_QNX 0 +#define BX_PLATFORM_RPI 0 #define BX_PLATFORM_WINDOWS 0 #define BX_PLATFORM_WINRT 0 #define BX_PLATFORM_XBOX360 0 @@ -67,6 +68,10 @@ # undef BX_PLATFORM_WINRT # define BX_PLATFORM_WINRT 1 # endif +#elif defined(BCM2708) +// RaspberryPi compiler defines __linux__ +# undef BX_PLATFORM_RPI +# define BX_PLATFORM_RPI 1 #elif defined(__native_client__) // NaCl compiler defines __linux__ # undef BX_PLATFORM_NACL @@ -106,6 +111,7 @@ || BX_PLATFORM_NACL \ || BX_PLATFORM_OSX \ || BX_PLATFORM_QNX \ + || BX_PLATFORM_RPI \ ) // http://sourceforge.net/apps/mediawiki/predef/index.php?title=Architectures @@ -175,6 +181,8 @@ # define BX_PLATFORM_NAME "OSX" #elif BX_PLATFORM_QNX # define BX_PLATFORM_NAME "QNX" +#elif BX_PLATFORM_RPI +# define BX_PLATFORM_NAME "RaspberryPi" #elif BX_PLATFORM_WINDOWS # define BX_PLATFORM_NAME "Windows" #elif BX_PLATFORM_WINRT diff --git a/include/bx/timer.h b/include/bx/timer.h index 2efb8ac..93d64ca 100644 --- a/include/bx/timer.h +++ b/include/bx/timer.h @@ -12,10 +12,10 @@ # include // clock, clock_gettime #elif BX_PLATFORM_EMSCRIPTEN # include -#elif BX_PLATFORM_FREEBSD || BX_PLATFORM_LINUX || BX_PLATFORM_NACL || BX_PLATFORM_OSX || BX_PLATFORM_IOS || BX_PLATFORM_QNX -# include // gettimeofday #elif BX_PLATFORM_WINDOWS || BX_PLATFORM_WINRT # include +#else +# include // gettimeofday #endif // BX_PLATFORM_ namespace bx diff --git a/premake/toolchain.lua b/premake/toolchain.lua index 5f812d9..d09ce7a 100755 --- a/premake/toolchain.lua +++ b/premake/toolchain.lua @@ -20,14 +20,15 @@ function toolchain(_buildDir, _libDir) { "freebsd", "FreeBSD" }, { "linux-gcc", "Linux (GCC compiler)" }, { "linux-clang", "Linux (Clang compiler)" }, + { "ios-arm", "iOS - ARM" }, + { "ios-simulator", "iOS - Simulator" }, { "mingw", "MinGW" }, { "nacl", "Native Client" }, { "nacl-arm", "Native Client - ARM" }, - { "pnacl", "Native Client - PNaCl" }, { "osx", "OSX" }, - { "ios-arm", "iOS - ARM" }, - { "ios-simulator", "iOS - Simulator" }, + { "pnacl", "Native Client - PNaCl" }, { "qnx-arm", "QNX/Blackberry - ARM" }, + { "rpi", "RaspberryPi" }, } } @@ -103,6 +104,20 @@ function toolchain(_buildDir, _libDir) location (_buildDir .. "projects/" .. _ACTION .. "-freebsd") end + if "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.ar = "ar" + location (_buildDir .. "projects/" .. _ACTION .. "-ios-arm") + end + + if "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.ar = "ar" + location (_buildDir .. "projects/" .. _ACTION .. "-ios-simulator") + end + if "linux-gcc" == _OPTIONS["gcc"] then location (_buildDir .. "projects/" .. _ACTION .. "-linux") end @@ -159,6 +174,10 @@ function toolchain(_buildDir, _libDir) location (_buildDir .. "projects/" .. _ACTION .. "-nacl-arm") end + if "osx" == _OPTIONS["gcc"] then + location (_buildDir .. "projects/" .. _ACTION .. "-osx") + end + if "pnacl" == _OPTIONS["gcc"] then if not os.getenv("NACL_SDK_ROOT") then @@ -178,24 +197,6 @@ function toolchain(_buildDir, _libDir) location (_buildDir .. "projects/" .. _ACTION .. "-pnacl") end - if "osx" == _OPTIONS["gcc"] then - location (_buildDir .. "projects/" .. _ACTION .. "-osx") - end - - if "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.ar = "ar" - location (_buildDir .. "projects/" .. _ACTION .. "-ios-arm") - end - - if "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.ar = "ar" - location (_buildDir .. "projects/" .. _ACTION .. "-ios-simulator") - end - if "qnx-arm" == _OPTIONS["gcc"] then if not os.getenv("QNX_HOST") then @@ -207,6 +208,10 @@ function toolchain(_buildDir, _libDir) premake.gcc.ar = "$(QNX_HOST)/usr/bin/arm-unknown-nto-qnx8.0.0eabi-ar" location (_buildDir .. "projects/" .. _ACTION .. "-qnx-arm") end + + if "rpi" == _OPTIONS["gcc"] then + location (_buildDir .. "projects/" .. _ACTION .. "-rpi") + end end flags { @@ -695,6 +700,31 @@ function toolchain(_buildDir, _libDir) "-Wundef", } + configuration { "rpi" } + defines { + "BCM2708", -- There is no special prefedined compiler symbol to detect RaspberryPi, faking it. + } + buildoptions { + "-std=c++0x", + "-U__STRICT_ANSI__", + "-Wunused-value", + "-Wundef", + } + includedirs { + "/opt/vc/include", + "/opt/vc/include/interface/vcos/pthreads", + "/opt/vc/include/interface/vmcs_host/linux", + } + libdirs { + "/opt/vc/lib", + } + links { + "rt", + } + linkoptions { + "-Wl,--gc-sections", + } + configuration {} -- reset configuration end @@ -718,7 +748,7 @@ function strip() "@$(ANDROID_NDK_X86)/bin/i686-linux-android-strip -s \"$(TARGET)\"" } - configuration { "linux-*", "Release" } + configuration { "linux-* or rpi", "Release" } postbuildcommands { "@echo Stripping symbols.", "@strip -s \"$(TARGET)\""