Răsfoiți Sursa

Fixed to compile and run on Mac OS X.

Lasse Öörni 14 ani în urmă
părinte
comite
95c6640cba

+ 2 - 2
CMakeLists.txt

@@ -48,8 +48,9 @@ elseif (MINGW)
     set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc")
     set (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/Bin)
 else ()
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
     set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof -m32")
-    set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
+    # set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
     set (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/Bin)
 endif ()
 
@@ -83,7 +84,6 @@ macro (finalize_lib)
     endif ()
 endmacro ()
 
-
 # Macro for model asset compilation
 macro (add_model NAME PARAMETERS)
     add_custom_command (

+ 20 - 22
Engine/Graphics/CMakeLists.txt

@@ -6,31 +6,29 @@ file (GLOB CPP_FILES *.cpp)
 file (GLOB H_FILES *.h)
 
 if (USE_OPENGL)
-    file (GLOB IMPL_CPP_FILES OpenGL/*.cpp)
-    file (GLOB IMPL_H_FILES OpenGL/*.h)
-    set (SOURCE_FILES ${CPP_FILES} ${H_FILES} ${IMPL_CPP_FILES} ${IMPL_H_FILES})
-
-    # Include directories
-    include_directories (
-        . ../Container ../Core ../IO ../Math ../Resource ../Scene ../../ThirdParty/GLee
-    )
-
-    # Define target & libraries to link
-    add_library (${TARGET_NAME} STATIC ${SOURCE_FILES})
-    target_link_libraries (${TARGET_NAME} Container Core GLee Math Resource Scene SDL)
+    file (GLOB SYS_CPP_FILES OpenGL/*.cpp)
+    file (GLOB SYS_H_FILES OpenGL/*.h)
+    include_directories (../../ThirdParty/GLee)
 else ()
-    file (GLOB IMPL_CPP_FILES Direct3D9/*.cpp)
-    file (GLOB IMPL_H_FILES Direct3D9/*.h)
-    set (SOURCE_FILES ${CPP_FILES} ${H_FILES} ${IMPL_CPP_FILES} ${IMPL_H_FILES})
+    file (GLOB SYS_CPP_FILES Direct3D9/*.cpp)
+    file (GLOB SYS_H_FILES Direct3D9/*.h)
+endif ()
 
-    # Include directories
-    include_directories (
-        . ../Container ../Core ../IO ../Math ../Resource ../Scene
-    )
+set (SOURCE_FILES ${CPP_FILES} ${H_FILES} ${SYS_CPP_FILES} ${SYS_H_FILES})
 
-    # Define target & libraries to link
-    add_library (${TARGET_NAME} STATIC ${SOURCE_FILES})
-    target_link_libraries (${TARGET_NAME} Container Core Math Resource Scene d3d9.lib)
+# Include directories
+include_directories (
+    . ../Container ../Core ../IO ../Math ../Resource ../Scene
+)
+
+# Define target & libraries to link
+add_library (${TARGET_NAME} STATIC ${SOURCE_FILES})
+target_link_libraries (${TARGET_NAME} Container Core GLee Math Resource Scene)
+	
+if (USE_OPENGL)
+    target_link_libraries (${TARGET_NAME} GLee)
+else ()
+    target_link_libraries (${TARGET_NAME} d3d9.lib)
 endif ()
 
 enable_pch ()

+ 12 - 1
Engine/IO/FileSystem.cpp

@@ -48,6 +48,10 @@
 #define MAX_PATH 256
 #endif
 
+#ifdef __APPLE__
+#include <mach-o/dyld.h>
+#endif
+
 #include "DebugNew.h"
 
 OBJECTTYPESTATIC(FileSystem);
@@ -320,9 +324,16 @@ String FileSystem::GetProgramDir()
 {
     char exeName[MAX_PATH];
     exeName[0] = 0;
+    
     #ifdef _WIN32
     GetModuleFileName(0, exeName, MAX_PATH);
-    #else
+    #endif
+    #ifdef __APPLE__
+    unsigned size = MAX_PATH;
+    _NSGetExecutablePath(exeName, &size);
+    printf("NSGetExecutablePath: %s\n", exeName);
+    #endif
+    #ifdef __linux__
     unsigned pid = getpid();
     String link = "/proc/" + String(pid) + "/exe";
     readlink(link.CString(), exeName, MAX_PATH);

+ 8 - 8
ThirdParty/GLee/GLee.h

@@ -38,16 +38,16 @@
 #ifndef __glee_h_
 #define __glee_h_
 
-// Do not include OpenGL extensions from the system headers
+// Do not include OpenGL extensions from the system headers
 #define __glext_h_
 
-#ifdef __WIN32__
-#include <Windows.h>
-#endif
-#if defined(__MACOSX__)
-#include <OpenGL/gl.h>
-#else
-#include <GL/gl.h>
+#ifdef _WIN32
+#include <Windows.h>
+#endif
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
 #endif
 
 #ifndef APIENTRY

+ 31 - 18
ThirdParty/SDL/CMakeLists.txt

@@ -3,30 +3,43 @@ set (TARGET_NAME SDL)
 
 # Define source files
 file (GLOB C_FILES
-    src/*.c src/atomic/*.c src/audio/*.c src/audio/dummy/*.c src/cpuinfo/*.c src/events/*.c src/file/*.c src/libm/*.c src/render/*.c src/render/opengl/*.c src/render/software/*.c src/stdlib/*.c src/thread/*.c src/timer/*.c src/video/*.c
+    src/*.c src/atomic/*.c src/audio/*.c src/audio/dummy/*.c src/cpuinfo/*.c src/events/*.c src/file/*.c src/libm/*.c src/render/*.c src/render/opengl/*.c src/render/software/*.c src/stdlib/*.c src/thread/*.c src/timer/*.c src/video/*.c
 )
-    
-if (WIN32)
-    file (GLOB PLATFORM_C_FILES
-        src/audio/windx5/*.c src/core/windows/*.c src/loadso/windows/*.c src/thread/windows/*.c src/timer/windows/*.c src/video/windows/*.c
-    )
-elseif (UNIX)
-    file (GLOB PLATFORM_C_FILES
-        src/audio/alsa/*.c src/audio/dma/*.c src/audio/dsp/*.c src/loadso/dlopen/*.c src/thread/pthread/*.c src/timer/unix/*.c src/video/x11/*.c        
-    )
+    
+if (WIN32)
+    file (GLOB SYS_C_FILES
+        src/audio/windx5/*.c src/core/windows/*.c src/loadso/windows/*.c src/thread/windows/*.c src/timer/windows/*.c src/video/windows/*.c
+    )
+elseif (APPLE)
+    file (GLOB SYS_C_FILES
+        src/audio/macosx/*.c src/loadso/dlopen/*.c src/thread/pthread/*.c src/timer/unix/*.c src/video/cocoa/*.m
+    )
+else ()
+    file (GLOB SYS_C_FILES
+        src/audio/alsa/*.c src/audio/dma/*.c src/audio/dsp/*.c src/loadso/dlopen/*.c src/thread/pthread/*.c src/timer/unix/*.c src/video/x11/*.c        
+    )
 endif ()
-
+
 file (GLOB H_FILES include/*.h)
 
-set (SOURCE_FILES ${C_FILES} ${PLATFORM_C_FILES} ${H_FILES})
+set (SOURCE_FILES ${C_FILES} ${SYS_C_FILES} ${H_FILES})
+
+set_source_files_properties (${SOURCE_FILES} PROPERTIES LANGUAGE C)
 
 # Define target & libraries to link
-add_library (${TARGET_NAME} STATIC ${SOURCE_FILES})
-
+add_library (${TARGET_NAME} STATIC ${SOURCE_FILES})
+
 if (WIN32)
     target_link_libraries (${TARGET_NAME} winmm.lib opengl32.lib)
-elseif (UNIX)
-    target_link_libraries (${TARGET_NAME} dl GL pthread)
-endif ()
-
+elseif (APPLE)
+    FIND_LIBRARY (AUDIOUNIT_FW AudioUnit)
+    FIND_LIBRARY (CARBON_FW Carbon)
+    FIND_LIBRARY (COCOA_FW Cocoa)
+    FIND_LIBRARY (COREAUDIO_FW CoreAudio)
+    FIND_LIBRARY (OPENGL_FW OpenGL)
+    target_link_libraries (${TARGET_NAME} dl pthread ${AUDIOUNIT_FW} ${CARBON_FW} ${COCOA_FW} ${COREAUDIO_FW} ${OPENGL_FW})
+else ()
+    target_link_libraries (${TARGET_NAME} dl pthread GL)
+endif ()
+
 finalize_lib ()

+ 7 - 18
ThirdParty/SDL/include/SDL_config_macosx.h

@@ -19,6 +19,8 @@
   3. This notice may not be removed or altered from any source distribution.
 */
 
+// Modified by Lasse Öörni for Urho3D
+
 #ifndef _SDL_config_macosx_h
 #define _SDL_config_macosx_h
 
@@ -108,14 +110,16 @@
 #define HAVE_ATAN 1
 #define HAVE_ATAN2 1
 
+/* Allow disabling of core subsystems */
+#define SDL_JOYSTICK_DISABLED 1
+#define SDL_HAPTIC_DISABLED 1
+#define SDL_POWER_DISABLED 1
+
 /* Enable various audio drivers */
 #define SDL_AUDIO_DRIVER_COREAUDIO	1
-#define SDL_AUDIO_DRIVER_DISK	1
 #define SDL_AUDIO_DRIVER_DUMMY	1
 
 /* Enable various input drivers */
-#define SDL_JOYSTICK_IOKIT	1
-#define SDL_HAPTIC_IOKIT	1
 
 /* Enable various shared object loading systems */
 #define SDL_LOADSO_DLOPEN	1
@@ -129,21 +133,6 @@
 
 /* Enable various video drivers */
 #define SDL_VIDEO_DRIVER_COCOA	1
-#define SDL_VIDEO_DRIVER_DUMMY	1
-#define SDL_VIDEO_DRIVER_X11 1
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/usr/X11R6/lib/libX11.6.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/usr/X11R6/lib/libXext.6.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "/usr/X11R6/lib/libXinerama.1.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT "/usr/X11R6/lib/libXi.6.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/usr/X11R6/lib/libXss.1.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "/usr/X11R6/lib/libXxf86vm.1.dylib"
-#define SDL_VIDEO_DRIVER_X11_XINERAMA 1
-#define SDL_VIDEO_DRIVER_X11_XINPUT 1
-#define SDL_VIDEO_DRIVER_X11_XRANDR 1
-#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1
-#define SDL_VIDEO_DRIVER_X11_XSHAPE 1
-#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1
 
 #ifndef SDL_VIDEO_RENDER_OGL
 #define SDL_VIDEO_RENDER_OGL	1

+ 8 - 2
ThirdParty/SDL/include/SDL_config_windows.h

@@ -144,13 +144,19 @@ typedef unsigned int uintptr_t;
 #define HAVE_STDDEF_H	1
 #endif
 
+#define SDL_HAPTIC_DISABLED 1
+#define SDL_JOYSTICK_DISABLED 1
+
+/* Allow disabling of core subsystems */
+#define SDL_JOYSTICK_DISABLED 1
+#define SDL_HAPTIC_DISABLED 1
+#define SDL_POWER_DISABLED 1
+
 /* Enable various audio drivers */
 #define SDL_AUDIO_DRIVER_DSOUND	1
 #define SDL_AUDIO_DRIVER_DUMMY	1
 
 /* Enable various input drivers */
-#define SDL_HAPTIC_DISABLED 1
-#define SDL_JOYSTICK_DISABLED 1
 
 /* Enable various shared object loading systems */
 #define SDL_LOADSO_WINDOWS 1