Server platform works on OS X too

This commit is contained in:
Marcelo Fernandez 2018-10-25 10:59:26 -03:00
parent 7a42df3626
commit fe93bb03fe
11 changed files with 61 additions and 8 deletions

View file

@ -349,7 +349,10 @@ if selected_platform in platform_list:
else: # always enable those errors else: # always enable those errors
env.Append(CCFLAGS=['-Werror=return-type']) env.Append(CCFLAGS=['-Werror=return-type'])
suffix = "." + selected_platform if (hasattr(detect, 'get_program_suffix')):
suffix = "." + detect.get_program_suffix()
else:
suffix = "." + selected_platform
if (env["target"] == "release"): if (env["target"] == "release"):
if env["tools"]: if env["tools"]:

View file

@ -55,7 +55,7 @@
#include <netinet/tcp.h> #include <netinet/tcp.h>
#if defined(OSX_ENABLED) || defined(IPHONE_ENABLED) #if defined(__APPLE__)
#define MSG_NOSIGNAL SO_NOSIGPIPE #define MSG_NOSIGNAL SO_NOSIGPIPE
#endif #endif

View file

@ -74,8 +74,12 @@ public:
IP_Unix *ip_unix; IP_Unix *ip_unix;
#ifdef COREAUDIO_ENABLED
AudioDriverCoreAudio audio_driver; AudioDriverCoreAudio audio_driver;
#endif
#ifdef COREMIDI_ENABLED
MIDIDriverCoreMidi midi_driver; MIDIDriverCoreMidi midi_driver;
#endif
InputDefault *input; InputDefault *input;
JoypadOSX *joypad_osx; JoypadOSX *joypad_osx;

View file

@ -1408,7 +1408,9 @@ Error OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_a
void OS_OSX::finalize() { void OS_OSX::finalize() {
#ifdef COREMIDI_ENABLED
midi_driver.close(); midi_driver.close();
#endif
CFNotificationCenterRemoveObserver(CFNotificationCenterGetDistributedCenter(), NULL, kTISNotifySelectedKeyboardInputSourceChanged, NULL); CFNotificationCenterRemoveObserver(CFNotificationCenterGetDistributedCenter(), NULL, kTISNotifySelectedKeyboardInputSourceChanged, NULL);
CGDisplayRemoveReconfigurationCallback(displays_arrangement_changed, NULL); CGDisplayRemoveReconfigurationCallback(displays_arrangement_changed, NULL);
@ -2725,7 +2727,9 @@ OS_OSX::OS_OSX() {
[NSApp sendEvent:event]; [NSApp sendEvent:event];
} }
#ifdef COREAUDIO_ENABLED
AudioDriverManager::add_driver(&audio_driver); AudioDriverManager::add_driver(&audio_driver);
#endif
} }
bool OS_OSX::_check_internal_feature_support(const String &p_feature) { bool OS_OSX::_check_internal_feature_support(const String &p_feature) {

View file

@ -1,10 +1,21 @@
#!/usr/bin/env python #!/usr/bin/env python
import os
import platform
import sys
Import('env') Import('env')
common_server = [\ common_server = [\
"os_server.cpp",\ "os_server.cpp",\
"#platform/x11/crash_handler_x11.cpp",
"#platform/x11/power_x11.cpp",
] ]
if sys.platform == "darwin":
common_server.append("#platform/osx/crash_handler_osx.mm")
common_server.append("#platform/osx/power_osx.cpp")
common_server.append("#platform/osx/sem_osx.cpp")
else:
common_server.append("#platform/x11/crash_handler_x11.cpp")
common_server.append("#platform/x11/power_x11.cpp")
prog = env.add_program('#bin/godot_server', ['godot_server.cpp'] + common_server) prog = env.add_program('#bin/godot_server', ['godot_server.cpp'] + common_server)

View file

@ -11,9 +11,15 @@ def get_name():
return "Server" return "Server"
def get_program_suffix():
if (sys.platform == "darwin"):
return "osx"
return "x11"
def can_build(): def can_build():
if (os.name != "posix" or sys.platform == "darwin"): if (os.name != "posix" or sys.platform != "darwin"):
return False return False
return True return True
@ -147,6 +153,10 @@ def configure(env):
env.Append(CPPPATH=['#platform/server']) env.Append(CPPPATH=['#platform/server'])
env.Append(CPPFLAGS=['-DSERVER_ENABLED', '-DUNIX_ENABLED']) env.Append(CPPFLAGS=['-DSERVER_ENABLED', '-DUNIX_ENABLED'])
if (platform.system() == "Darwin"):
env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-lz', '-framework', 'IOKit'])
env.Append(LIBS=['pthread']) env.Append(LIBS=['pthread'])
if (platform.system() == "Linux"): if (platform.system() == "Linux"):

View file

@ -68,6 +68,10 @@ void OS_Server::initialize_core() {
crash_handler.initialize(); crash_handler.initialize();
OS_Unix::initialize_core(); OS_Unix::initialize_core();
#ifdef __APPLE__
SemaphoreOSX::make_default();
#endif
} }
Error OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { Error OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
@ -87,7 +91,11 @@ Error OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int
input = memnew(InputDefault); input = memnew(InputDefault);
#ifdef __APPLE__
power_manager = memnew(power_osx);
#else
power_manager = memnew(PowerX11); power_manager = memnew(PowerX11);
#endif
_ensure_user_data_dir(); _ensure_user_data_dir();

View file

@ -34,8 +34,14 @@
#include "drivers/rtaudio/audio_driver_rtaudio.h" #include "drivers/rtaudio/audio_driver_rtaudio.h"
#include "drivers/unix/os_unix.h" #include "drivers/unix/os_unix.h"
#include "main/input_default.h" #include "main/input_default.h"
#ifdef __APPLE__
#include "platform/osx/crash_handler_osx.h"
#include "platform/osx/power_osx.h"
#include "platform/osx/sem_osx.h"
#else
#include "platform/x11/crash_handler_x11.h" #include "platform/x11/crash_handler_x11.h"
#include "platform/x11/power_x11.h" #include "platform/x11/power_x11.h"
#endif
#include "servers/audio_server.h" #include "servers/audio_server.h"
#include "servers/visual/rasterizer.h" #include "servers/visual/rasterizer.h"
#include "servers/visual_server.h" #include "servers/visual_server.h"
@ -61,7 +67,11 @@ class OS_Server : public OS_Unix {
InputDefault *input; InputDefault *input;
#ifdef __APPLE__
power_osx *power_manager;
#else
PowerX11 *power_manager; PowerX11 *power_manager;
#endif
CrashHandler crash_handler; CrashHandler crash_handler;

View file

@ -28,10 +28,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/ /*************************************************************************/
#ifdef __linux__ #if defined(__linux__) || defined(__APPLE__)
#include <alloca.h> #include <alloca.h>
#endif #endif
#if defined(__FreeBSD__) || defined(__OpenBSD__) #if defined(__FreeBSD__) || defined(__OpenBSD__)
#include <stdlib.h> #include <stdlib.h>
#define PTHREAD_BSD_SET_NAME #define PTHREAD_BSD_SET_NAME
#endif #endif
#ifdef __APPLE__
#define PTHREAD_RENAME_SELF
#endif

View file

@ -174,7 +174,7 @@
#define LWS_HAVE_MALLOC_H #define LWS_HAVE_MALLOC_H
#endif #endif
#if !defined(IPHONE_ENABLED) && !defined(OSX_ENABLED) && !defined(__HAIKU__) #if !defined(__APPLE__) && !defined(__HAIKU__)
#define LWS_HAVE_PIPE2 #define LWS_HAVE_PIPE2
#endif #endif

View file

@ -81,7 +81,7 @@
/* Define to 1 if you have the <sys/prctl.h> header file. */ /* Define to 1 if you have the <sys/prctl.h> header file. */
#define LWS_HAVE_SYS_PRCTL_H #define LWS_HAVE_SYS_PRCTL_H
#if defined(OSX_ENABLED) || defined(IPHONE_ENABLED) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__HAIKU__) #if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__HAIKU__)
#undef LWS_HAVE_SYS_PRCTL_H #undef LWS_HAVE_SYS_PRCTL_H
#endif #endif