OS X native backend no longer use files from src/sdl directly

Cocoa backend is compiling but failed to link
Some files are referenced using symbolic links
Apple's HID Utilities were moved to own directory
This commit is contained in:
alexey.lysiuk 2014-12-14 11:29:28 +02:00
parent 0cf8c1baea
commit 8d16c2e3c0
25 changed files with 161 additions and 77 deletions

View file

@ -545,7 +545,7 @@ set( PLAT_WIN32_SOURCES
win32/i_system.cpp win32/i_system.cpp
win32/st_start.cpp win32/st_start.cpp
win32/win32video.cpp ) win32/win32video.cpp )
set( PLAT_SDL_SYSTEM_SOURCES set( PLAT_SDL_SOURCES
sdl/crashcatcher.c sdl/crashcatcher.c
sdl/hardware.cpp sdl/hardware.cpp
sdl/i_cd.cpp sdl/i_cd.cpp
@ -553,8 +553,7 @@ set( PLAT_SDL_SYSTEM_SOURCES
sdl/i_movie.cpp sdl/i_movie.cpp
sdl/i_system.cpp sdl/i_system.cpp
sdl/sdlvideo.cpp sdl/sdlvideo.cpp
sdl/st_start.cpp ) sdl/st_start.cpp
set( PLAT_SDL_SPECIAL_SOURCES
sdl/i_gui.cpp sdl/i_gui.cpp
sdl/i_input.cpp sdl/i_input.cpp
sdl/i_joystick.cpp sdl/i_joystick.cpp
@ -563,39 +562,27 @@ set( PLAT_MAC_SOURCES
cocoa/iwadpicker_cocoa.mm cocoa/iwadpicker_cocoa.mm
cocoa/i_system_cocoa.mm ) cocoa/i_system_cocoa.mm )
set( PLAT_COCOA_SOURCES set( PLAT_COCOA_SOURCES
cocoa/HID_Config_Utilities.c cocoa/hid/HID_Config_Utilities.c
cocoa/HID_Error_Handler.c cocoa/hid/HID_Error_Handler.c
cocoa/HID_Name_Lookup.c cocoa/hid/HID_Name_Lookup.c
cocoa/HID_Queue_Utilities.c cocoa/hid/HID_Queue_Utilities.c
cocoa/HID_Utilities.c cocoa/hid/HID_Utilities.c
cocoa/IOHIDDevice_.c cocoa/hid/IOHIDDevice_.c
cocoa/IOHIDElement_.c cocoa/hid/IOHIDElement_.c
cocoa/ImmrHIDUtilAddOn.c cocoa/hid/ImmrHIDUtilAddOn.c
cocoa/critsec.cpp
cocoa/i_backend_cocoa.mm cocoa/i_backend_cocoa.mm
cocoa/i_cd.cpp
cocoa/i_joystick.cpp cocoa/i_joystick.cpp
cocoa/i_movie.cpp
cocoa/st_start.cpp
cocoa/i_timer.cpp cocoa/i_timer.cpp
cocoa/zdoom.icns ) cocoa/zdoom.icns )
if( APPLE )
set( PLAT_SDL_SOURCES ${PLAT_SDL_SYSTEM_SOURCES} "${FMOD_LIBRARY}" )
if( OSX_COCOA_BACKEND )
set( PLAT_MAC_SOURCES ${PLAT_MAC_SOURCES} ${PLAT_COCOA_SOURCES} )
add_definitions( -DUSE_NATIVE_COCOA )
else( OSX_COCOA_BACKEND )
set( PLAT_MAC_SOURCES ${PLAT_MAC_SOURCES} ${PLAT_SDL_SPECIAL_SOURCES} )
endif( OSX_COCOA_BACKEND )
set_source_files_properties( cocoa/zdoom.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources )
set_source_files_properties( "${FMOD_LIBRARY}" PROPERTIES MACOSX_PACKAGE_LOCATION Frameworks )
else( APPLE )
set( PLAT_SDL_SOURCES ${PLAT_SDL_SYSTEM_SOURCES} ${PLAT_SDL_SPECIAL_SOURCES} )
endif( APPLE )
if( WIN32 ) if( WIN32 )
set( SYSTEM_SOURCES_DIR win32 ) set( SYSTEM_SOURCES_DIR win32 )
set( SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} ) set( SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} )
set( OTHER_SYSTEM_SOURCES ${PLAT_SDL_SOURCES} ${PLAT_MAC_SOURCES} ) set( OTHER_SYSTEM_SOURCES ${PLAT_SDL_SOURCES} ${PLAT_MAC_SOURCES} ${PLAT_COCOA_SOURCES} )
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE ) if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
# CMake is not set up to compile and link rc files with GCC. :( # CMake is not set up to compile and link rc files with GCC. :(
@ -606,15 +593,25 @@ if( WIN32 )
else( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE ) else( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
set( SYSTEM_SOURCES ${SYSTEM_SOURCES} win32/zdoom.rc ) set( SYSTEM_SOURCES ${SYSTEM_SOURCES} win32/zdoom.rc )
endif( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE ) endif( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
elseif( APPLE )
if( OSX_COCOA_BACKEND )
set( SYSTEM_SOURCES_DIR cocoa )
set( SYSTEM_SOURCES ${PLAT_COCOA_SOURCES} )
set( OTHER_SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} ${PLAT_SDL_SOURCES} )
else( OSX_COCOA_BACKEND )
set( SYSTEM_SOURCES_DIR sdl )
set( SYSTEM_SOURCES ${PLAT_SDL_SOURCES} )
set( OTHER_SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} ${PLAT_COCOA_SOURCES} )
endif( OSX_COCOA_BACKEND )
set( SYSTEM_SOURCES ${SYSTEM_SOURCES} ${PLAT_MAC_SOURCES} "${FMOD_LIBRARY}" )
set_source_files_properties( cocoa/zdoom.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources )
set_source_files_properties( "${FMOD_LIBRARY}" PROPERTIES MACOSX_PACKAGE_LOCATION Frameworks )
else( WIN32 ) else( WIN32 )
set( SYSTEM_SOURCES_DIR sdl ) set( SYSTEM_SOURCES_DIR sdl )
set( SYSTEM_SOURCES ${PLAT_SDL_SOURCES} ) set( SYSTEM_SOURCES ${PLAT_SDL_SOURCES} )
if( APPLE ) set( OTHER_SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} ${PLAT_MAC_SOURCES} ${PLAT_COCOA_SOURCES} )
set( SYSTEM_SOURCES ${SYSTEM_SOURCES} ${PLAT_MAC_SOURCES} )
set( OTHER_SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} )
else( APPLE )
set( OTHER_SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} ${PLAT_MAC_SOURCES} )
endif( APPLE )
endif( WIN32 ) endif( WIN32 )
if( NOT ASM_SOURCES ) if( NOT ASM_SOURCES )
@ -672,11 +669,18 @@ endif( DYN_FLUIDSYNTH )
# there's generally a new cpp for every header so this file will get changed # there's generally a new cpp for every header so this file will get changed
if( WIN32 ) if( WIN32 )
set( EXTRA_HEADER_DIRS win32/*.h ) set( EXTRA_HEADER_DIRS win32/*.h )
elseif( APPLE )
if( OSX_COCOA_BACKEND )
set( EXTRA_HEADER_DIRS cocoa/*.h )
else( OSX_COCOA_BACKEND )
set( EXTRA_HEADER_DIRS sdl/*.h )
endif( OSX_COCOA_BACKEND )
else( WIN32 ) else( WIN32 )
set( EXTRA_HEADER_DIRS sdl/*.h ) set( EXTRA_HEADER_DIRS sdl/*.h )
endif( WIN32 ) endif( WIN32 )
file( GLOB HEADER_FILES file( GLOB HEADER_FILES
${EXTRA_HEADER_DIRS} ${EXTRA_HEADER_DIRS}
cocoa/*.h
fragglescript/*.h fragglescript/*.h
g_doom/*.h g_doom/*.h
g_heretic/*.h g_heretic/*.h

62
src/cocoa/critsec.cpp Normal file
View file

@ -0,0 +1,62 @@
/*
** critsec.cpp
**
**---------------------------------------------------------------------------
** Copyright 2014 Alexey Lysiuk
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** 3. The name of the author may not be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**---------------------------------------------------------------------------
**
*/
#include "critsec.h"
// TODO: add error handling
FCriticalSection::FCriticalSection()
{
pthread_mutexattr_t attributes;
pthread_mutexattr_init(&attributes);
pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init(&m_mutex, &attributes);
pthread_mutexattr_destroy(&attributes);
}
FCriticalSection::~FCriticalSection()
{
pthread_mutex_destroy(&m_mutex);
}
void FCriticalSection::Enter()
{
pthread_mutex_lock(&m_mutex);
}
void FCriticalSection::Leave()
{
pthread_mutex_unlock(&m_mutex);
}

53
src/cocoa/critsec.h Normal file
View file

@ -0,0 +1,53 @@
/*
** critsec.h
**
**---------------------------------------------------------------------------
** Copyright 2014 Alexey Lysiuk
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** 3. The name of the author may not be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**---------------------------------------------------------------------------
**
*/
#ifndef CRITSEC_H
#define CRITSEC_H
#include <pthread.h>
class FCriticalSection
{
public:
FCriticalSection();
~FCriticalSection();
void Enter();
void Leave();
private:
pthread_mutex_t m_mutex;
};
#endif

1
src/cocoa/dikeys.h Symbolic link
View file

@ -0,0 +1 @@
../sdl/dikeys.h

1
src/cocoa/hardware.h Symbolic link
View file

@ -0,0 +1 @@
../sdl/hardware.h

View file

@ -1625,48 +1625,6 @@ const char* I_GetBackEndName()
extern "C" extern "C"
{ {
struct SDL_mutex
{
pthread_mutex_t mutex;
};
SDL_mutex* SDL_CreateMutex()
{
pthread_mutexattr_t attributes;
pthread_mutexattr_init(&attributes);
pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE);
SDL_mutex* result = new SDL_mutex;
if (0 != pthread_mutex_init(&result->mutex, &attributes))
{
delete result;
result = NULL;
}
pthread_mutexattr_destroy(&attributes);
return result;
}
int SDL_mutexP(SDL_mutex* mutex)
{
return pthread_mutex_lock(&mutex->mutex);
}
int SDL_mutexV(SDL_mutex* mutex)
{
return pthread_mutex_unlock(&mutex->mutex);
}
void SDL_DestroyMutex(SDL_mutex* mutex)
{
pthread_mutex_destroy(&mutex->mutex);
delete mutex;
}
static timeval s_startTicks; static timeval s_startTicks;
uint32_t SDL_GetTicks() uint32_t SDL_GetTicks()

1
src/cocoa/i_cd.cpp Symbolic link
View file

@ -0,0 +1 @@
../sdl/i_cd.cpp

1
src/cocoa/i_input.h Symbolic link
View file

@ -0,0 +1 @@
../sdl/i_input.h

View file

@ -37,7 +37,7 @@
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
#include "HID_Utilities_External.h" #include "hid/HID_Utilities_External.h"
#include "d_event.h" #include "d_event.h"
#include "doomdef.h" #include "doomdef.h"

1
src/cocoa/i_movie.cpp Symbolic link
View file

@ -0,0 +1 @@
../sdl/i_movie.cpp

1
src/cocoa/i_system.h Symbolic link
View file

@ -0,0 +1 @@
../sdl/i_system.h

1
src/cocoa/st_start.cpp Symbolic link
View file

@ -0,0 +1 @@
../sdl/st_start.cpp