diff --git a/Utilities/GNU.cpp b/Utilities/GNU.cpp new file mode 100644 index 0000000000..fec72a632f --- /dev/null +++ b/Utilities/GNU.cpp @@ -0,0 +1,9 @@ +#include "GNU.h" + +#ifdef __APPLE__ +void * _aligned_malloc(size_t size, size_t alignment) { + void *buffer; + posix_memalign(&buffer, alignment, size); + return buffer; +} +#endif diff --git a/Utilities/GNU.h b/Utilities/GNU.h index 9d0ba8abb2..46fa6faf35 100644 --- a/Utilities/GNU.h +++ b/Utilities/GNU.h @@ -3,7 +3,10 @@ #if defined(__GNUG__) #include #include + +#ifndef __APPLE__ #include +#endif #define _fpclass(x) std::fpclassify(x) #define __forceinline __attribute__((always_inline)) @@ -16,8 +19,31 @@ #define _CRT_ALIGN(x) __attribute__((aligned(x))) #define InterlockedCompareExchange(ptr,new_val,old_val) __sync_val_compare_and_swap(ptr,old_val,new_val) #define InterlockedCompareExchange64(ptr,new_val,old_val) __sync_val_compare_and_swap(ptr,old_val,new_val) + +#ifndef __APPLE__ #define _aligned_malloc(size,alignment) memalign(alignment,size) +#else +void * _aligned_malloc(size_t size, size_t alignment); +#define wxIsNaN(x) ((x) != (x)) +#endif + #define _aligned_free free + +#ifndef CLOCK_MONOTONIC +#define CLOCK_MONOTONIC 0 +#include +#include + +static int clock_gettime(int foo, struct timespec *ts) { + struct timeval tv; + + gettimeofday(&tv, NULL); + ts->tv_sec = tv.tv_sec; + ts->tv_nsec = tv.tv_usec * 1000; + return (0); +} +#endif /* !CLOCK_MONOTONIC */ + #define DWORD int32_t #endif diff --git a/rpcs3/CMakeLists.txt b/rpcs3/CMakeLists.txt index 68ef012f69..b928cf46e2 100644 --- a/rpcs3/CMakeLists.txt +++ b/rpcs3/CMakeLists.txt @@ -42,9 +42,17 @@ find_package(OpenAL REQUIRED) include("${wxWidgets_USE_FILE}") if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(PLATFORM_ARCH "linux/x86_64") + if(LINUX) + set(PLATFORM_ARCH "linux/x86_64") + elseif(APPLE) + set(PLATFORM_ARCH "macosx/x86_64") + endif() else() - set(PLATFORM_ARCH "linux/x86") + if(LINUX) + set(PLATFORM_ARCH "linux/x86") + elseif(APPLE) + set(PLATFORM_ARCH "macosx/x86") + endif() endif() include_directories( @@ -72,6 +80,7 @@ GLOB_RECURSE RPCS3_SRC "${RPCS3_SRC_DIR}/rpcs3.cpp" "${RPCS3_SRC_DIR}/Ini.cpp" +"${RPCS3_SRC_DIR}/../Utilities/GNU.cpp" "${RPCS3_SRC_DIR}/Emu/*" "${RPCS3_SRC_DIR}/Gui/*" "${RPCS3_SRC_DIR}/Loader/*" diff --git a/rpcs3/Emu/GS/GL/OpenGL.h b/rpcs3/Emu/GS/GL/OpenGL.h index 2288c8ce02..fb8cbdfb16 100644 --- a/rpcs3/Emu/GS/GL/OpenGL.h +++ b/rpcs3/Emu/GS/GL/OpenGL.h @@ -2,8 +2,6 @@ #ifndef _WIN32 #include #endif -#include -#include "GL/glext.h" #ifdef _WIN32 typedef BOOL (WINAPI* PFNWGLSWAPINTERVALEXTPROC) (int interval); @@ -14,7 +12,12 @@ typedef BOOL (WINAPI* PFNWGLSWAPINTERVALEXTPROC) (int interval); #undef OPENGL_PROC #undef OPENGL_PROC2 +#elif __APPLE__ +#include +#include + #else +#include #include #include #endif diff --git a/rpcs3/rpcs3.cpp b/rpcs3/rpcs3.cpp index 3bf28ccc5e..28bed7caf8 100644 --- a/rpcs3/rpcs3.cpp +++ b/rpcs3/rpcs3.cpp @@ -73,8 +73,10 @@ void Rpcs3App::SendDbgCommand(DbgCommand id, CPUThread* thr) Rpcs3App::Rpcs3App() { #ifdef __UNIX__ + #ifndef __APPLE__ XInitThreads(); #endif + #endif } /* CPUThread& GetCPU(const u8 core) diff --git a/stblib/stb_truetype.h b/stblib/stb_truetype.h index 94f27df15e..e453f024e3 100644 --- a/stblib/stb_truetype.h +++ b/stblib/stb_truetype.h @@ -366,7 +366,9 @@ int main(int arg, char **argv) // #define your own functions "STBTT_malloc" / "STBTT_free" to avoid malloc.h #ifndef STBTT_malloc + #ifndef __APPLE__ #include + #endif #define STBTT_malloc(x,u) malloc(x) #define STBTT_free(x,u) free(x) #endif