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,6 +349,9 @@ if selected_platform in platform_list:
else: # always enable those errors
env.Append(CCFLAGS=['-Werror=return-type'])
if (hasattr(detect, 'get_program_suffix')):
suffix = "." + detect.get_program_suffix()
else:
suffix = "." + selected_platform
if (env["target"] == "release"):

View File

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

View File

@ -74,8 +74,12 @@ public:
IP_Unix *ip_unix;
#ifdef COREAUDIO_ENABLED
AudioDriverCoreAudio audio_driver;
#endif
#ifdef COREMIDI_ENABLED
MIDIDriverCoreMidi midi_driver;
#endif
InputDefault *input;
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() {
#ifdef COREMIDI_ENABLED
midi_driver.close();
#endif
CFNotificationCenterRemoveObserver(CFNotificationCenterGetDistributedCenter(), NULL, kTISNotifySelectedKeyboardInputSourceChanged, NULL);
CGDisplayRemoveReconfigurationCallback(displays_arrangement_changed, NULL);
@ -2725,7 +2727,9 @@ OS_OSX::OS_OSX() {
[NSApp sendEvent:event];
}
#ifdef COREAUDIO_ENABLED
AudioDriverManager::add_driver(&audio_driver);
#endif
}
bool OS_OSX::_check_internal_feature_support(const String &p_feature) {

View File

@ -1,10 +1,21 @@
#!/usr/bin/env python
import os
import platform
import sys
Import('env')
common_server = [\
"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)

View File

@ -11,9 +11,15 @@ def get_name():
return "Server"
def get_program_suffix():
if (sys.platform == "darwin"):
return "osx"
return "x11"
def can_build():
if (os.name != "posix" or sys.platform == "darwin"):
if (os.name != "posix" or sys.platform != "darwin"):
return False
return True
@ -147,6 +153,10 @@ def configure(env):
env.Append(CPPPATH=['#platform/server'])
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'])
if (platform.system() == "Linux"):

View File

@ -68,6 +68,10 @@ void OS_Server::initialize_core() {
crash_handler.initialize();
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) {
@ -87,7 +91,11 @@ Error OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int
input = memnew(InputDefault);
#ifdef __APPLE__
power_manager = memnew(power_osx);
#else
power_manager = memnew(PowerX11);
#endif
_ensure_user_data_dir();

View File

@ -34,8 +34,14 @@
#include "drivers/rtaudio/audio_driver_rtaudio.h"
#include "drivers/unix/os_unix.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/power_x11.h"
#endif
#include "servers/audio_server.h"
#include "servers/visual/rasterizer.h"
#include "servers/visual_server.h"
@ -61,7 +67,11 @@ class OS_Server : public OS_Unix {
InputDefault *input;
#ifdef __APPLE__
power_osx *power_manager;
#else
PowerX11 *power_manager;
#endif
CrashHandler crash_handler;

View File

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

View File

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

View File

@ -81,7 +81,7 @@
/* Define to 1 if you have the <sys/prctl.h> header file. */
#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
#endif